xref: /netbsd-src/crypto/external/bsd/heimdal/dist/windows/NTMakefile.w32 (revision dd75ac5b443e967e26b4d18cc8cd5eb98512bfbf)
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
32all::
33
34clean::
35
36test::
37
38prep::
39
40all:: prep
41
42!include "NTMakefile.sdk"
43
44!ifdef NODEBUG
45BUILD=rel
46!else
47BUILD=dbg
48!endif
49
50!if exist($(MAKEDIR)\windows\NTMakefile.w32)
51SRC=$(MAKEDIR)
52!elseif exist($(MAKEDIR)\..\windows\NTMakefile.w32)
53SRC=$(MAKEDIR)\..
54!elseif exist($(MAKEDIR)\..\..\windows\NTMakefile.w32)
55SRC=$(MAKEDIR)\..\..
56!elseif exist($(MAKEDIR)\..\..\..\windows\NTMakefile.w32)
57SRC=$(MAKEDIR)\..\..\..
58!elseif exist($(MAKEDIR)\..\..\..\..\windows\NTMakefile.w32)
59SRC=$(MAKEDIR)\..\..\..\..
60!else
61!  error Cant determine source directory
62!endif
63
64!  if "$(CPU)"=="i386" || "$(CPU)"=="x86"
65MCPU=x86
66!  elseif "$(CPU)"=="AMD64"
67MCPU=amd64
68!  else
69!    error Unknown CPU
70!  endif
71
72!include "NTMakefile.config"
73
74#----------------------------------------------------------------
75# Directory macros
76
77DESTDIR		=$(SRC)\out\dest_$(CPU)
78OBJDIR		=$(SRC)\out\obj_$(CPU)
79
80INCDIR		=$(DESTDIR)\inc
81LIBDIR		=$(DESTDIR)\lib
82BINDIR		=$(DESTDIR)\bin
83PLUGINDIR	=$(BINDIR)
84DOCDIR		=$(DESTDIR)\doc
85SBINDIR		=$(BINDIR)
86LIBEXECDIR	=$(BINDIR)
87ASMDIR		=$(BINDIR)
88INSTDIR		=$(DESTDIR)\install
89SDKDIR		=$(SRC)\out\sdk
90SDKINCDIR	=$(SDKDIR)\inc
91SDKLIBDIR	=$(SDKDIR)\lib\$(CPU)
92SDKSRCDIR	=$(SDKDIR)\src
93SDKREDISTDIR	=$(SDKDIR)\redist\$(CPU)
94
95!ifdef RELDIR
96SRCDIR =$(SRC)\$(RELDIR)
97OBJ    =$(OBJDIR)\$(RELDIR)
98!else
99OBJ    =$(OBJDIR)
100!endif
101
102# For tests:
103PATH=$(PATH);$(BINDIR)
104
105#----------------------------------------------------------------
106# Command macros
107
108RMAKE=nmake /nologo /f NTMakefile RECURSE=1
109MKDIR=md
110CP=copy /Y
111LINK=link
112LM=lib
113RM=del /q
114ECHO=echo
115RC=rc
116
117#----------------------------------------------------------------
118# Program macros
119
120AWK_CMD=gawk.exe
121YACC_CMD=bison.exe
122LEX_CMD=flex.exe
123PYTHON=python.exe
124PERL=perl.exe
125CMP=cmp.exe
126MAKECAT=makecat.exe
127HHC=hhc.exe
128MAKEINFO=makeinfo.exe
129SED=sed.exe
130
131CANDLE_CMD=candle.exe
132LIGHT_CMD=light.exe
133
134# Only used for tests
135SH=sh.exe
136
137# Commands
138AWK=$(AWK_CMD)
139YACC=$(YACC_CMD) -y
140LEX=$(LEX_CMD)
141CANDLE=$(CANDLE_CMD) -nologo
142LIGHT=$(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
156pthreadinc= -I$(PTHREAD_INC)
157!endif
158
159#----------------------------------------------------------------
160# Build options
161
162cincdirs=$(cincdirs) -I$(INCDIR) -I$(INCDIR)\krb5 $(pthreadinc)
163cdefines=$(cdefines) -DHAVE_CONFIG_H
164# Windows CNG provider
165cdefines=$(cdefines) -DHCRYPTO_DEF_PROVIDER=w32crypto
166cdebug=$(cdebug) /Zi
167ldebug=$(ldebug) /DEBUG
168localcflags=$(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#
185cwarn=$(cwarn) -D_CRT_SECURE_NO_WARNINGS -wd4996 -wd4127 -wd4244 -wd4100 -wd4706
186cwarn=$(cwarn) -wd4214 -wd4267 -wd4018 -wd4389 -wd4204 -wd4221 -wd4295 -wd4146
187
188!if "$(CPU)"=="i386"
189libmach=/machine:X86
190!elseif "$(CPU)"=="AMD64"
191libmach=/machine:X64
192!else
193!  error Unknown CPU value
194!endif
195
196!ifdef NO_MP
197MPOPT=
198!else
199MPOPT=/MP
200!endif
201
202!ifndef STATICRUNTIME
203
204C2OBJ_C = $(CC) $(cdebug) $(cflags) $(cvarsdll) $(AUXCFLAGS) $(intcflags) $(cdefines) $(cincdirs) $(cwarn)
205EXECONLINK_C = $(LINK) $(ldebug) $(conlflags) $(conlibsdll) $(libmach)
206EXEGUILINK_C = $(LINK) $(ldebug) $(guilflags) $(guilibsdll) $(libmach)
207DLLCONLINK_C = $(LINK) $(ldebug) $(dlllflags) $(conlibsdll) $(libmach)
208DLLGUILINK_C = $(LINK) $(ldebug) $(dlllflags) $(guilibsdll) $(libmach)
209
210!else # STATICRUNTIME
211
212C2OBJ_C = $(CC) $(cdebug) $(cflags) $(cvarsmt) $(AUXCFLAGS) $(intcflags) $(cdefines) $(cincdirs) $(cwarn)
213EXECONLINK_C = $(LINK) $(ldebug) $(conlflags) $(conlibsmt) $(libmach)
214EXEGUILINK_C = $(LINK) $(ldebug) $(guilflags) $(guilibsmt) $(libmach)
215DLLCONLINK_C = $(LINK) $(ldebug) $(dlllflags) $(conlibsmt) $(libmach)
216DLLGUILINK_C = $(LINK) $(ldebug) $(dlllflags) $(guilibsmt) $(libmach)
217
218!endif
219
220LIBGUI_C = $(LM) /nologo $(libmach) /SUBSYSTEM:WINDOWS
221LIBCON_C = $(LM) /nologo $(libmach) /SUBSYSTEM:CONSOLE
222
223C2OBJ = $(C2OBJ_C) -Fo$@ -Fd$(@D)\ $**
224C2OBJ_NP = $(C2OBJ_C) $(MPOPT) $<
225C2OBJ_P = $(C2OBJ_NP) -Fo$(OBJ)\ -Fd$(OBJ)\ #
226EXECONLINK = $(EXECONLINK_C) -OUT:$@ $**
227EXEGUILINK = $(EXEGUILINK_C) -OUT:$@ $**
228DLLCONLINK = $(DLLCONLINK_C) -OUT:$@ $**
229DLLGUILINK = $(DLLGUILINK_C) -OUT:$@ $**
230LIBGUI = $(LIBGUI_C) /OUT:$@ $**
231LIBCON = $(LIBCON_C) /OUT:$@ $**
232
233# Preprocess files to stdout using config.h
234CPREPROCESSOUT = $(CC) /EP /FI$(INCDIR)\config.h /TC /DCPP_ONLY=1
235
236# Resources
237
238RC2RES_C = $(RC) $(cincdirs) $(AUXRCFLAGS)
239RC2RES = $(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
247REQUIRED_TOOLS= \
248	"$(AWK_CMD)" "$(YACC_CMD)" "$(LEX_CMD)" "$(PYTHON)" "$(PERL)" \
249	"$(CMP)" "$(SED)" "$(MAKECAT)" "$(MAKEINFO)" "$(HHC)"
250
251!ifdef BUILD_INSTALLERS
252REQUIRED_TOOLS=$(REQUIRED_TOOLS) "$(CANDLE_CMD)" "$(LIGHT_CMD)"
253!endif
254
255OPTIONAL_TOOLS="$(SH)"
256
257check-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
284prep:: check-utils
285
286show-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
301prep:: 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
353all:: announce
354
355all-tools:: announce-tools
356
357test:: announce
358
359clean:: announce
360
361announce:
362	@echo.
363	@echo --------- Entering $(RELDIR:\= ):
364
365announce-tools:
366	@echo.
367	@echo --------- Entering $(RELDIR:\= ) tools:
368!endif
369
370#----------------------------------------------------------------------
371# Create any required directories if they don't already exist
372
373prep:: mkdirs
374
375mkdirs:
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
414subdirs:
415	@for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) && popd) || exit /b 1
416
417clean-subdirs:
418	@for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) clean && popd) || exit /b 1
419
420test-subdirs:
421	@for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) test && popd) || exit /b 1
422
423all:: subdirs
424
425clean:: clean-subdirs
426
427test:: test-subdirs
428
429!endif
430
431#----------------------------------------------------------------------
432# Clean targets
433
434!ifdef CLEANFILES
435clean::
436	-$(RM) $(CLEANFILES)
437!endif
438!ifdef RELDIR
439clean::
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
459MT=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
507SIGNTOOL=signtool.exe
508!endif
509
510!ifdef SIGNTOOL_C
511
512!ifndef SIGNTOOL_T
513SIGNTOOL_T=http://timestamp.verisign.com/scripts/timstamp.dll
514!endif
515!ifndef SIGNTOOL_T_SHA256
516SIGNTOOL_T_SHA256=http://sha256timestamp.ws.symantec.com/sha256/timestamp
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)" != ""
540SYMSTORE_COMMENT = |$(SYMSTORE_COMMENT)
541!ENDIF
542SYMSTORE_IMPORT= \
543$(SYMSTORE_EXE) add /s $(SYMSTORE_ROOT) /t "Heimdal" /v "$(BUILD)-$(CPU)-$(VER_PACKAGE_VERSION)" /c "$(@F)$(SYMSTORE_COMMENT)" /f $*.*
544!ELSE
545SYMSTORE_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
554EXEPREP=\
555( $(_VC_MANIFEST_EMBED_EXE) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
556
557EXEPREP_NOHEIM=\
558( $(_VC_MANIFEST_EMBED_EXE_NOHEIM) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
559
560EXEPREP_NODIST=\
561( $(_VC_MANIFEST_EMBED_EXE_NOHEIM) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) ) || ( $(RM) $@ && exit /b 1 )
562
563DLLPREP=\
564( $(_VC_MANIFEST_EMBED_DLL) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) && $(_CODESIGN) && $(_CODESIGN_SHA256) ) || ( $(RM) $@ && exit /b 1 )
565
566DLLPREP_NODIST=\
567( $(_VC_MANIFEST_EMBED_DLL) && $(_VC_MANIFEST_CLEAN) && $(SYMSTORE_IMPORT) ) || ( $(RM) $@ && exit /b 1 )
568
569DLLPREP_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
576LIBASN1	    =$(LIBDIR)\libasn1.lib
577LIBCOMERR   =$(LIBDIR)\libcom_err.lib
578LIBEDITLINE =$(LIBDIR)\libeditline.lib
579LIBGSSAPI   =$(LIBDIR)\libgssapi.lib
580LIBHCRYPTO  =$(LIBDIR)\libhcrypto.lib
581LIBHDB	    =$(LIBDIR)\libhdb.lib
582LIBHEIMBASE =$(LIBDIR)\libheimbase.lib
583LIBHEIMDAL  =$(LIBDIR)\heimdal.lib
584LIBHEIMIPCC =$(LIBDIR)\libheim-ipcc.lib
585LIBHEIMIPCS =$(LIBDIR)\libheim-ipcs.lib
586LIBHEIMNTLM =$(LIBDIR)\libheimntlm.lib
587LIBHX509    =$(LIBDIR)\libhx509.lib
588LIBKADM5CLNT=$(LIBDIR)\libkadm5clnt.lib
589LIBKADM5SRV =$(LIBDIR)\libkadm5srv.lib
590LIBKDC	    =$(LIBDIR)\libkdc.lib
591LIBLTM	    =$(LIBDIR)\libltm.lib
592LIBKRB5	    =$(LIBDIR)\libkrb5.lib
593LIBRFC3961  =$(LIBDIR)\librfc3961.lib
594LIBROKEN    =$(LIBDIR)\libroken.lib
595LIBSL	    =$(LIBDIR)\libsl.lib
596LIBSQLITE   =$(LIBDIR)\libsqlite.lib
597LIBVERS	    =$(LIBDIR)\libvers.lib
598LIBWIND	    =$(LIBDIR)\libwind.lib
599
600!ifdef VER_DEBUG
601ASM_DBG=.Debug
602!endif
603!ifdef VER_PRERELEASE
604ASM_PRE=.Pre
605!endif
606!ifdef VER_PRIVATE
607ASM_PVT=.Private
608!endif
609!ifdef VER_SPECIAL
610ASM_SPC=.Special
611!endif
612
613ASMKRBNAME  =Heimdal.Kerberos$(ASM_SPC)$(ASM_PVT)$(ASM_PRE)$(ASM_DBG)
614APPMANIFEST =$(INCDIR)\Heimdal.Application.$(MCPU).manifest
615
616