HEIMDAL: move code from source4/heimdal* to third_party/heimdal*
[samba.git] / third_party / heimdal / windows / NTMakefile.w32
1 ########################################################################
2 #
3 # Copyright (c) 2009-2011, 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 all::
33
34 clean::
35
36 test::
37
38 prep::
39
40 all:: prep
41
42 !include <Win32.Mak>
43
44 !ifdef NODEBUG
45 BUILD=rel
46 !else
47 BUILD=dbg
48 !endif
49
50 !if exist($(MAKEDIR)\windows\NTMakefile.w32)
51 SRC=$(MAKEDIR)
52 !elseif exist($(MAKEDIR)\..\windows\NTMakefile.w32)
53 SRC=$(MAKEDIR)\..
54 !elseif exist($(MAKEDIR)\..\..\windows\NTMakefile.w32)
55 SRC=$(MAKEDIR)\..\..
56 !elseif exist($(MAKEDIR)\..\..\..\windows\NTMakefile.w32)
57 SRC=$(MAKEDIR)\..\..\..
58 !elseif exist($(MAKEDIR)\..\..\..\..\windows\NTMakefile.w32)
59 SRC=$(MAKEDIR)\..\..\..\..
60 !else
61 !  error Cant determine source directory
62 !endif
63
64 !  if "$(CPU)"=="i386" || "$(CPU)"=="x86"
65 MCPU=x86
66 !  elseif "$(CPU)"=="AMD64"
67 MCPU=amd64
68 !  else
69 !    error Unknown CPU
70 !  endif
71
72 !include "NTMakefile.config"
73
74 #----------------------------------------------------------------
75 # Directory macros
76
77 DESTDIR         =$(SRC)\out\dest_$(CPU)
78 OBJDIR          =$(SRC)\out\obj_$(CPU)
79
80 INCDIR          =$(DESTDIR)\inc
81 LIBDIR          =$(DESTDIR)\lib
82 BINDIR          =$(DESTDIR)\bin
83 PLUGINDIR       =$(BINDIR)
84 DOCDIR          =$(DESTDIR)\doc
85 SBINDIR         =$(BINDIR)
86 LIBEXECDIR      =$(BINDIR)
87 ASMDIR          =$(BINDIR)
88 INSTDIR         =$(DESTDIR)\install
89 SDKDIR          =$(SRC)\out\sdk
90 SDKINCDIR       =$(SDKDIR)\inc
91 SDKLIBDIR       =$(SDKDIR)\lib\$(CPU)
92 SDKSRCDIR       =$(SDKDIR)\src
93 SDKREDISTDIR    =$(SDKDIR)\redist\$(CPU)
94
95 !ifdef RELDIR
96 SRCDIR =$(SRC)\$(RELDIR)
97 OBJ    =$(OBJDIR)\$(RELDIR)
98 !else
99 OBJ    =$(OBJDIR)
100 !endif
101
102 # For tests:
103 PATH=$(PATH);$(BINDIR)
104
105 #----------------------------------------------------------------
106 # Command macros
107
108 RMAKE=nmake /nologo /f NTMakefile RECURSE=1
109 MKDIR=md
110 CP=copy /Y
111 LINK=link
112 LM=lib
113 RM=del /q
114 ECHO=echo
115 RC=rc
116
117 #----------------------------------------------------------------
118 # Program macros
119
120 AWK_CMD=gawk.exe
121 YACC_CMD=bison.exe
122 LEX_CMD=flex.exe
123 PYTHON=python.exe
124 PERL=perl.exe
125 CMP=cmp.exe
126 MAKECAT=makecat.exe
127 HHC=hhc.exe
128 MAKEINFO=makeinfo.exe
129 SED=sed.exe
130
131 CANDLE_CMD=candle.exe
132 LIGHT_CMD=light.exe
133
134 # Only used for tests
135 SH=sh.exe
136
137 # Commands
138 AWK=$(AWK_CMD)
139 YACC=$(YACC_CMD) -y
140 LEX=$(LEX_CMD)
141 CANDLE=$(CANDLE_CMD) -nologo
142 LIGHT=$(LIGHT_CMD) -nologo
143
144 #----------------------------------------------------------------
145 # External dependencies
146
147 # For pthread support to be enabled, both PTHREAD_INC and PTHREAD_LIB
148 # should be defined.  PTHREAD_INC should be the include directory
149 # where pthread.h is to be found (i.e. $(PTHREAD_INC)\pthread.h should
150 # exist), and PTHREAD_LIB is the full path to the pthread import
151 # library.
152 #
153 # Note that both paths should not contain any whitespace.
154
155 !ifdef PTHREAD_INC
156 pthreadinc= -I$(PTHREAD_INC)
157 !endif
158
159 #----------------------------------------------------------------
160 # Build options
161
162 cincdirs=$(cincdirs) -I$(INCDIR) -I$(INCDIR)\krb5 $(pthreadinc)
163 cdefines=$(cdefines) -DHAVE_CONFIG_H
164 # Windows CNG provider
165 cdefines=$(cdefines) -DHCRYPTO_DEF_PROVIDER=w32crypto
166 cdebug=$(cdebug) /Zi
167 ldebug=$(ldebug) /DEBUG
168 localcflags=$(localcflags) /Oy-
169
170 # Disable warnings:
171 #
172 # C4996: 'function' was declared deprecated
173 # C4127: Conditional expression is constant
174 # C4244: Conversion from 'type1' to 'type2', possible loss of data
175 # C4100: 'identifier': unreferenced formal parameter
176 # C4706: Assignment within conditional expression
177 # C4214: Nonstandard extension used
178 # C4267: '': Conversion from 'type1' to 'type2', possible loss of data
179 # C4018: '': Signed/unsigned mismatch
180 # C4204: Nonstandard extension used: non-constant aggregate initializer
181 # C4221: Nonstandard extension used: 'v1': cannot be initialized using address of automatic variable 'v2'
182 # C4295: '': Array is too small to include a terminating null character
183 # C4146: Unary minus operator applied to unsigned type, result still unsigned.
184 #
185 cwarn=$(cwarn) -D_CRT_SECURE_NO_WARNINGS -wd4996 -wd4127 -wd4244 -wd4100 -wd4706
186 cwarn=$(cwarn) -wd4214 -wd4267 -wd4018 -wd4389 -wd4204 -wd4221 -wd4295 -wd4146
187
188 !if "$(CPU)"=="i386"
189 libmach=/machine:X86
190 !elseif "$(CPU)"=="AMD64"
191 libmach=/machine:X64
192 !else
193 !  error Unknown CPU value
194 !endif
195
196 !ifdef NO_MP
197 MPOPT=
198 !else
199 MPOPT=/MP
200 !endif
201
202 !ifndef STATICRUNTIME
203
204 C2OBJ_C = $(CC) $(cdebug) $(cflags) $(cvarsdll) $(AUXCFLAGS) $(intcflags) $(cdefines) $(cincdirs) $(cwarn)
205 EXECONLINK_C = $(LINK) $(ldebug) $(conlflags) $(conlibsdll) $(libmach)
206 EXEGUILINK_C = $(LINK) $(ldebug) $(guilflags) $(guilibsdll) $(libmach)
207 DLLCONLINK_C = $(LINK) $(ldebug) $(dlllflags) $(conlibsdll) $(libmach)
208 DLLGUILINK_C = $(LINK) $(ldebug) $(dlllflags) $(guilibsdll) $(libmach)
209
210 !else # STATICRUNTIME
211
212 C2OBJ_C = $(CC) $(cdebug) $(cflags) $(cvarsmt) $(AUXCFLAGS) $(intcflags) $(cdefines) $(cincdirs) $(cwarn)
213 EXECONLINK_C = $(LINK) $(ldebug) $(conlflags) $(conlibsmt) $(libmach)
214 EXEGUILINK_C = $(LINK) $(ldebug) $(guilflags) $(guilibsmt) $(libmach)
215 DLLCONLINK_C = $(LINK) $(ldebug) $(dlllflags) $(conlibsmt) $(libmach)
216 DLLGUILINK_C = $(LINK) $(ldebug) $(dlllflags) $(guilibsmt) $(libmach)
217
218 !endif
219
220 LIBGUI_C = $(LM) /nologo $(libmach) /SUBSYSTEM:WINDOWS
221 LIBCON_C = $(LM) /nologo $(libmach) /SUBSYSTEM:CONSOLE
222
223 C2OBJ = $(C2OBJ_C) -Fo$@ -Fd$(@D)\ $**
224 C2OBJ_NP = $(C2OBJ_C) $(MPOPT) $<
225 C2OBJ_P = $(C2OBJ_NP) -Fo$(OBJ)\ -Fd$(OBJ)\ #
226 EXECONLINK = $(EXECONLINK_C) -OUT:$@ $**
227 EXEGUILINK = $(EXEGUILINK_C) -OUT:$@ $**
228 DLLCONLINK = $(DLLCONLINK_C) -OUT:$@ $**
229 DLLGUILINK = $(DLLGUILINK_C) -OUT:$@ $**
230 LIBGUI = $(LIBGUI_C) /OUT:$@ $**
231 LIBCON = $(LIBCON_C) /OUT:$@ $**
232
233 # Preprocess files to stdout using config.h
234 CPREPROCESSOUT = $(CC) /EP /FI$(INCDIR)\config.h /TC /DCPP_ONLY=1
235
236 # Resources
237
238 RC2RES_C = $(RC) $(cincdirs) $(AUXRCFLAGS)
239 RC2RES = $(RC2RES_C) -fo $@ $**
240
241 #----------------------------------------------------------------------
242 # If this is the initial invocation, we check if all the build
243 # utilities are there.  Also show the commands macros.
244
245 !ifndef RECURSE
246
247 REQUIRED_TOOLS= \
248         "$(AWK_CMD)" "$(YACC_CMD)" "$(LEX_CMD)" "$(PYTHON)" "$(PERL)" \
249         "$(CMP)" "$(SED)" "$(MAKECAT)" "$(MAKEINFO)" "$(HHC)"
250
251 !ifdef BUILD_INSTALLERS
252 REQUIRED_TOOLS=$(REQUIRED_TOOLS) "$(CANDLE_CMD)" "$(LIGHT_CMD)"
253 !endif
254
255 OPTIONAL_TOOLS="$(SH)" 
256
257 check-utils:
258         @for %%g in ( $(REQUIRED_TOOLS) ) do @( \
259         for /f %%f in ( "%%g" ) do @( \
260                 if exist %%f @( \
261                         echo Found %%f \
262                 ) else if "%%~$$PATH:f"=="" @( \
263                         echo Could not find %%f in PATH && \
264                         exit /b 1 \
265                 ) else @( \
266                         echo Found %%~$$PATH:f \
267                 ) \
268         ) \
269         )
270         @for %%g in ( $(OPTIONAL_TOOLS) ) do @( \
271         for /f %%f in ( "%%g" ) do @( \
272                 if exist %%f @( \
273                         echo Found %%f \
274                 ) else if "%%~$$PATH:f"=="" @( \
275                         echo Could not find %%f in PATH && \
276                         echo Optional targets may fail. \
277                 ) else @( \
278                         echo Found %%~$$PATH:f \
279                 ) \
280         ) \
281         )
282
283
284 prep:: check-utils
285
286 show-cmds:
287         @$(ECHO) C2OBJ=$(C2OBJ_C:\=\\)
288         @$(ECHO).
289         @$(ECHO) EXECONLINK=$(EXECONLINK_C)
290         @$(ECHO).
291         @$(ECHO) EXEGUILINK=$(EXEGUILINK_C)
292         @$(ECHO).
293         @$(ECHO) DLLCONLINK=$(DLLCONLINK_C)
294         @$(ECHO).
295         @$(ECHO) DLLGUILINK=$(DLLGUILINK_C)
296         @$(ECHO).
297         @$(ECHO) LIBGUI=$(LIBGUI_C)
298         @$(ECHO).
299         @$(ECHO) LIBCON=$(LIBCON_C)
300
301 prep:: show-cmds
302
303 !endif                          # RECURSE
304
305 {}.c{$(OBJ)}.obj::
306         $(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(localcflags) $(MPOPT) @<<
307 $<
308 <<
309
310 {$(OBJ)}.c{$(OBJ)}.obj::
311         $(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(extcflags) $(MPOPT) @<<
312 $<
313 <<
314
315 {}.cpp{$(OBJ)}.obj::
316         $(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(localcflags) $(MPOPT) @<<
317 $<
318 <<
319
320 {$(OBJ)}.cpp{$(OBJ)}.obj::
321         $(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(extcflags) $(MPOPT) @<<
322 $<
323 <<
324
325 {}.hin{$(INCDIR)}.h:
326         $(CP) $< $@
327
328 {}.h{$(INCDIR)}.h:
329         $(CP) $< $@
330
331 {}.h{$(INCDIR)\krb5}.h:
332         $(CP) $< $@
333
334 {$(OBJ)}.h{$(INCDIR)}.h:
335         $(CP) $< $@
336
337 {$(OBJ)}.x{$(OBJ)}.c:
338         $(CP) $< $@
339
340 {$(OBJ)}.hx{$(INCDIR)}.h:
341         $(CP) $< $@
342
343 {$(OBJ)}.hx{$(OBJ)}.h:
344         $(CP) $< $@
345
346 {}.rc{$(OBJ)}.res:
347         $(RC2RES)
348
349 #----------------------------------------------------------------------
350 # Announce the build directory
351
352 !ifdef RELDIR
353 all:: announce
354
355 all-tools:: announce-tools
356
357 test:: announce
358
359 clean:: announce
360
361 announce:
362         @echo.
363         @echo --------- Entering $(RELDIR:\= ):
364
365 announce-tools:
366         @echo.
367         @echo --------- Entering $(RELDIR:\= ) tools:
368 !endif
369
370 #----------------------------------------------------------------------
371 # Create any required directories if they don't already exist
372
373 prep:: mkdirs
374
375 mkdirs:
376 !  if !exist("$(OBJ)")
377         -$(MKDIR) "$(OBJ)"
378 !  endif
379 !  if !exist("$(DESTDIR)")
380         -$(MKDIR) "$(DESTDIR)"
381 !  endif
382 !  if !exist("$(LIBDIR)")
383         -$(MKDIR) "$(LIBDIR)"
384 !  endif
385 !  if !exist("$(BINDIR)")
386         -$(MKDIR) "$(BINDIR)"
387 !  endif
388 !  if !exist("$(PLUGINDIR)")
389         -$(MKDIR) "$(PLUGINDIR)"
390 !  endif
391 !  if !exist("$(INCDIR)")
392         -$(MKDIR) "$(INCDIR)"
393 !  endif
394 !  if !exist("$(DOCDIR)")
395         -$(MKDIR) "$(DOCDIR)"
396 !  endif
397 !  if !exist("$(INCDIR)\gssapi")
398         -$(MKDIR) "$(INCDIR)\gssapi"
399 !  endif
400 !  if !exist("$(INCDIR)\hcrypto")
401         -$(MKDIR) "$(INCDIR)\hcrypto"
402 !  endif
403 !  if !exist("$(INCDIR)\kadm5")
404         -$(MKDIR) "$(INCDIR)\kadm5"
405 !  endif
406 !  if !exist("$(INCDIR)\krb5")
407         -$(MKDIR) "$(INCDIR)\krb5"
408 !  endif
409
410 #----------------------------------------------------------------------
411 # If SUBDIRS is defined, we should recurse into the subdirectories
412
413 !ifdef SUBDIRS
414 subdirs:
415         @for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) && popd) || exit /b 1
416
417 clean-subdirs:
418         @for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) clean && popd) || exit /b 1
419
420 test-subdirs:
421         @for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) test && popd) || exit /b 1
422
423 all:: subdirs
424
425 clean:: clean-subdirs
426
427 test:: test-subdirs
428
429 !endif
430
431 #----------------------------------------------------------------------
432 # Clean targets
433
434 !ifdef CLEANFILES
435 clean::
436         -$(RM) $(CLEANFILES)
437 !endif
438 !ifdef RELDIR
439 clean::
440         -$(RM) $(OBJ)\*.*
441 !endif
442
443 .SUFFIXES: .c .cpp .hin .h .x .hx
444
445 #----------------------------------------------------------------------
446 # Manifest handling
447 #
448 # Starting with Visual Studio 8, the C compiler and the linker
449 # generate manifests so that the applications will link with the
450 # correct side-by-side DLLs at run-time.  These are required for
451 # correct operation under Windows XP and later.  We also have custom
452 # manifests which need to be merged with the manifests that VS
453 # creates.
454 #
455 # The syntax for invoking the _VC_MANIFEST_EMBED_FOO macro is:
456 # $(_VC_MANIFEST_EMBED_???) <additional manifests>
457 #
458
459 MT=mt.exe -nologo
460
461 _VC_MANIFEST_EMBED_EXE= \
462 ( if exist $@.manifest $(MT) -outputresource:$@;1 -manifest $@.manifest $(APPMANIFEST) )
463
464 _VC_MANIFEST_EMBED_EXE_NOHEIM= \
465 ( if exist $@.manifest $(MT) -outputresource:$@;1 -manifest $@.manifest )
466
467 _VC_MANIFEST_EMBED_DLL= \
468 ( if exist $@.manifest $(MT) -outputresource:$@;2 -manifest $@.manifest )
469
470 _MERGE_MANIFEST_DLL= \
471 ( $(MT) -inputresource:$@;2 -manifest $(APPMANIFEST) -outputresource:$@;2 )
472
473 _INSERT_APPMANIFEST_DLL= \
474 ( $(MT) -manifest $(APPMANIFEST) -outputresource:$@;2 )
475
476 # Note that if you are merging manifests, then the VS generated
477 # manifest should be cleaned up after calling _VC_MANIFEST_EMBED_???.
478 # This ensures that even if the DLL or EXE is executed in-place, the
479 # embedded manifest will be used.  Otherwise the $@.manifest file will
480 # be used.
481
482 _VC_MANIFEST_CLEAN= \
483 ( if exist $@.manifest $(RM) $@.manifest )
484
485 # End of manifest handling
486
487 #----------------------------------------------------------------------
488 # Code and assembly signing
489 #
490 #
491 # SIGNTOOL is fullpath to signtool.exe from Windows v8.1 or later SDK
492 # (earlier versions do not support SHA-2 signatures)
493 #
494 # SIGNTOOL_C is any set of options required for certificate/private
495 # key selection for code signging.
496 #
497 # SIGNTOOL_O is any set of additional options to signtool.exe
498 #
499 # SIGNTOOL_T is the timestamp option
500
501 !ifdef CODESIGN
502 _CODESIGN=( $(CODESIGN) $@ )
503 _CODESIGN_SHA256=( $(CODESIGN_SHA256) $@ )
504 !else
505
506 !ifndef SIGNTOOL
507 SIGNTOOL=signtool.exe
508 !endif
509
510 !ifdef SIGNTOOL_C
511
512 !ifndef SIGNTOOL_T
513 SIGNTOOL_T=http://timestamp.digicert.com
514 !endif
515 !ifndef SIGNTOOL_T_SHA256
516 SIGNTOOL_T_SHA256=http://timestamp.digicert.com
517 !endif
518
519 _CODESIGN=( $(SIGNTOOL) sign /fd sha1 $(SIGNTOOL_O) /t $(SIGNTOOL_T) $(SIGNTOOL_C) /v $@ )
520 _CODESIGN_SHA256=( $(SIGNTOOL) sign /as /fd sha256 /td sha256 $(SIGNTOOL_O) /tr $(SIGNTOOL_T_SHA256) $(SIGNTOOL_C) /v $@ )
521 !else
522 _CODESIGN=( echo Skipping code sign )
523 _CODESIGN_SHA256=( echo Skipping sha256 code sign )
524 !endif
525
526 !endif
527
528 #----------------------------------------------------------------------
529 # Symbol Store Support
530 #
531 # SYMSTORE_EXE is full path to symstore.exe
532 #
533 # SYMSTORE_ROOT is full path to root directory of symbol store
534 #
535 # SYMSTORE_COMMENT is optional comment to include in symbol store catalog entry
536 #
537
538 !IF DEFINED(SYMSTORE_EXE) && DEFINED(SYMSTORE_ROOT)
539 !IF "$(SYMSTORE_COMMENT)" != ""
540 SYMSTORE_COMMENT = |$(SYMSTORE_COMMENT)
541 !ENDIF
542 SYMSTORE_IMPORT= \
543 $(SYMSTORE_EXE) add /s $(SYMSTORE_ROOT) /t "Heimdal" /v "$(BUILD)-$(CPU)-$(VER_PACKAGE_VERSION)" /c "$(@F)$(SYMSTORE_COMMENT)" /f $*.*
544 !ELSE
545 SYMSTORE_IMPORT=@echo No symbol store
546 !ENDIF
547
548 #----------------------------------------------------------------------
549 # Convenience macros for preparing EXEs and DLLs.  These are multiline
550 # macros that deal with manifests and code signing.  Unless we need to
551 # include custom manifests, these are what we should be using to
552 # prepare binaries.
553
554 EXEPREP=\
555 ( $(_VC_MANIFEST_EMBED_EXE) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
556
557 EXEPREP_NOHEIM=\
558 ( $(_VC_MANIFEST_EMBED_EXE_NOHEIM) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
559
560 EXEPREP_NODIST=\
561 ( $(_VC_MANIFEST_EMBED_EXE_NOHEIM) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) ) || ( $(RM) $@ && exit /b 1 )
562
563 DLLPREP=\
564 ( $(_VC_MANIFEST_EMBED_DLL) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
565
566 DLLPREP_NODIST=\
567 ( $(_VC_MANIFEST_EMBED_DLL) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) ) || ( $(RM) $@ && exit /b 1 )
568
569 DLLPREP_MERGE=\
570 ( ( $(_MERGE_MANIFEST_DLL) || $(_INSERT_APPMANIFEST_DLL) && $(SYMSTORE_IMPORT) ) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
571
572 #----------------------------------------------------------------------
573 # Convenience macros for import libraries and assemblies
574 #
575
576 LIBASN1     =$(LIBDIR)\libasn1.lib
577 LIBCOMERR   =$(LIBDIR)\libcom_err.lib
578 LIBEDITLINE =$(LIBDIR)\libeditline.lib
579 LIBGSSAPI   =$(LIBDIR)\libgssapi.lib
580 LIBGSS_PREAUTH=$(LIBDIR)\libgss_preauth.lib
581 LIBHCRYPTO  =$(LIBDIR)\libhcrypto.lib
582 LIBHDB      =$(LIBDIR)\libhdb.lib
583 LIBHEIMBASE =$(LIBDIR)\libheimbase.lib
584 LIBHEIMDAL  =$(LIBDIR)\heimdal.lib
585 LIBHEIMIPCC =$(LIBDIR)\libheim-ipcc.lib
586 LIBHEIMIPCS =$(LIBDIR)\libheim-ipcs.lib
587 LIBHEIMNTLM =$(LIBDIR)\libheimntlm.lib
588 LIBHX509    =$(LIBDIR)\libhx509.lib
589 LIBKADM5CLNT=$(LIBDIR)\libkadm5clnt.lib
590 LIBKADM5SRV =$(LIBDIR)\libkadm5srv.lib
591 LIBKDC      =$(LIBDIR)\libkdc.lib
592 LIBLTM      =$(LIBDIR)\libltm.lib
593 LIBKRB5     =$(LIBDIR)\libkrb5.lib
594 LIBRFC3961  =$(LIBDIR)\librfc3961.lib
595 LIBROKEN    =$(LIBDIR)\libroken.lib
596 LIBSL       =$(LIBDIR)\libsl.lib
597 LIBSQLITE   =$(LIBDIR)\libsqlite.lib
598 LIBVERS     =$(LIBDIR)\libvers.lib
599 LIBWIND     =$(LIBDIR)\libwind.lib
600 LIBX25519   =$(LIBDIR)\libx25519.lib
601
602 !ifdef VER_DEBUG
603 ASM_DBG=.Debug
604 !endif
605 !ifdef VER_PRERELEASE
606 ASM_PRE=.Pre
607 !endif
608 !ifdef VER_PRIVATE
609 ASM_PVT=.Private
610 !endif
611 !ifdef VER_SPECIAL
612 ASM_SPC=.Special
613 !endif
614
615 ASMKRBNAME  =Heimdal.Kerberos$(ASM_SPC)$(ASM_PVT)$(ASM_PRE)$(ASM_DBG)
616 APPMANIFEST =$(INCDIR)\Heimdal.Application.$(MCPU).manifest
617