Home | History | Annotate | Line # | Download | only in windows
NTMakefile.w32 revision 1.1.1.2
      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)\plugin\krb5
     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 SIGNTOOL=signtool.exe
    127 MAKECAT=makecat.exe
    128 HHC=hhc.exe
    129 MAKEINFO=makeinfo.exe
    130 SED=sed.exe
    131 
    132 CANDLE_CMD=candle.exe
    133 LIGHT_CMD=light.exe
    134 
    135 # Only used for tests
    136 SH=sh.exe
    137 
    138 # Commands
    139 AWK=$(AWK_CMD)
    140 YACC=$(YACC_CMD) -y
    141 LEX=$(LEX_CMD)
    142 CANDLE=$(CANDLE_CMD) -nologo
    143 LIGHT=$(LIGHT_CMD) -nologo
    144 
    145 #----------------------------------------------------------------
    146 # External dependencies
    147 
    148 # For pthread support to be enabled, both PTHREAD_INC and PTHREAD_LIB
    149 # should be defined.  PTHREAD_INC should be the include directory
    150 # where pthread.h is to be found (i.e. $(PTHREAD_INC)\pthread.h should
    151 # exist), and PTHREAD_LIB is the full path to the pthread import
    152 # library.
    153 #
    154 # Note that both paths should not contain any whitespace.
    155 
    156 !ifdef PTHREAD_INC
    157 pthreadinc= -I$(PTHREAD_INC)
    158 !endif
    159 
    160 #----------------------------------------------------------------
    161 # Build options
    162 
    163 cincdirs=$(cincdirs) -I$(INCDIR) -I$(INCDIR)\krb5 $(pthreadinc)
    164 cdefines=$(cdefines) -DHAVE_CONFIG_H
    165 cdebug=$(cdebug) /Zi
    166 ldebug=$(ldebug) /DEBUG
    167 
    168 # Disable warnings:
    169 #
    170 # C4996: 'function' was declared deprecated
    171 # C4127: Conditional expression is constant
    172 # C4244: Conversion from 'type1' to 'type2', possible loss of data
    173 # C4100: 'identifier': unreferenced formal parameter
    174 # C4706: Assignment within conditional expression
    175 # C4214: Nonstandard extension used
    176 # C4267: '': Conversion from 'type1' to 'type2', possible loss of data
    177 # C4018: '': Signed/unsigned mismatch
    178 # C4204: Nonstandard extension used: non-constant aggregate initializer
    179 # C4221: Nonstandard extension used: 'v1': cannot be initialized using address of automatic variable 'v2'
    180 # C4295: '': Array is too small to include a terminating null character
    181 # C4146: Unary minus operator applied to unsigned type, result still unsigned.
    182 #
    183 cwarn=$(cwarn) -D_CRT_SECURE_NO_WARNINGS -wd4996 -wd4127 -wd4244 -wd4100 -wd4706
    184 cwarn=$(cwarn) -wd4214 -wd4267 -wd4018 -wd4389 -wd4204 -wd4221 -wd4295 -wd4146
    185 
    186 !if "$(CPU)"=="i386"
    187 libmach=/machine:X86
    188 !elseif "$(CPU)"=="AMD64"
    189 libmach=/machine:X64
    190 !else
    191 !  error Unknown CPU value
    192 !endif
    193 
    194 !ifdef NO_MP
    195 MPOPT=
    196 !else
    197 MPOPT=/MP
    198 !endif
    199 
    200 !ifndef STATICRUNTIME
    201 
    202 C2OBJ_C = $(CC) $(cdebug) $(cflags) $(cvarsdll) $(AUXCFLAGS) $(intcflags) $(cdefines) $(cincdirs) $(cwarn)
    203 EXECONLINK_C = $(LINK) $(ldebug) $(conlflags) $(conlibsdll) $(libmach)
    204 EXEGUILINK_C = $(LINK) $(ldebug) $(guilflags) $(guilibsdll) $(libmach)
    205 DLLCONLINK_C = $(LINK) $(ldebug) $(dlllflags) $(conlibsdll) $(libmach)
    206 DLLGUILINK_C = $(LINK) $(ldebug) $(dlllflags) $(guilibsdll) $(libmach)
    207 
    208 !else # STATICRUNTIME
    209 
    210 C2OBJ_C = $(CC) $(cdebug) $(cflags) $(cvarsmt) $(AUXCFLAGS) $(intcflags) $(cdefines) $(cincdirs) $(cwarn)
    211 EXECONLINK_C = $(LINK) $(ldebug) $(conlflags) $(conlibsmt) $(libmach)
    212 EXEGUILINK_C = $(LINK) $(ldebug) $(guilflags) $(guilibsmt) $(libmach)
    213 DLLCONLINK_C = $(LINK) $(ldebug) $(dlllflags) $(conlibsmt) $(libmach)
    214 DLLGUILINK_C = $(LINK) $(ldebug) $(dlllflags) $(guilibsmt) $(libmach)
    215 
    216 !endif
    217 
    218 LIBGUI_C = $(LM) /nologo $(libmach) /SUBSYSTEM:WINDOWS
    219 LIBCON_C = $(LM) /nologo $(libmach) /SUBSYSTEM:CONSOLE
    220 
    221 C2OBJ = $(C2OBJ_C) -Fo$@ -Fd$(@D)\ $**
    222 C2OBJ_NP = $(C2OBJ_C) $(MPOPT) $<
    223 C2OBJ_P = $(C2OBJ_NP) -Fo$(OBJ)\ -Fd$(OBJ)\ #
    224 EXECONLINK = $(EXECONLINK_C) -OUT:$@ $**
    225 EXEGUILINK = $(EXEGUILINK_C) -OUT:$@ $**
    226 DLLCONLINK = $(DLLCONLINK_C) -OUT:$@ $**
    227 DLLGUILINK = $(DLLGUILINK_C) -OUT:$@ $**
    228 LIBGUI = $(LIBGUI_C) /OUT:$@ $**
    229 LIBCON = $(LIBCON_C) /OUT:$@ $**
    230 
    231 # Preprocess files to stdout using config.h
    232 CPREPROCESSOUT = $(CC) /EP /FI$(INCDIR)\config.h /TC /DCPP_ONLY=1
    233 
    234 # Resources
    235 
    236 RC2RES_C = $(RC) $(cincdirs) $(AUXRCFLAGS)
    237 RC2RES = $(RC2RES_C) -fo $@ $**
    238 
    239 #----------------------------------------------------------------------
    240 # If this is the initial invocation, we check if all the build
    241 # utilities are there.  Also show the commands macros.
    242 
    243 !ifndef RECURSE
    244 
    245 REQUIRED_TOOLS= \
    246 	"$(AWK_CMD)" "$(YACC_CMD)" "$(LEX_CMD)" "$(PYTHON)" "$(PERL)" \
    247 	"$(CMP)" "$(SED)" "$(SIGNTOOL)" "$(MAKECAT)" "$(MAKEINFO)" "$(HHC)"
    248 
    249 !ifdef BUILD_INSTALLERS
    250 REQUIRED_TOOLS=$(REQUIRED_TOOLS) "$(CANDLE_CMD)" "$(LIGHT_CMD)"
    251 !endif
    252 
    253 OPTIONAL_TOOLS="$(SH)" 
    254 
    255 check-utils:
    256 	@for %%g in ( $(REQUIRED_TOOLS) ) do @( \
    257 	for /f %%f in ( "%%g" ) do @( \
    258 		if exist %%f @( \
    259 			echo Found %%f \
    260 		) else if "%%~$$PATH:f"=="" @( \
    261 			echo Could not find %%f in PATH && \
    262 			exit /b 1 \
    263 		) else @( \
    264 			echo Found %%~$$PATH:f \
    265 		) \
    266 	) \
    267 	)
    268 	@for %%g in ( $(OPTIONAL_TOOLS) ) do @( \
    269 	for /f %%f in ( "%%g" ) do @( \
    270 		if exist %%f @( \
    271 			echo Found %%f \
    272 		) else if "%%~$$PATH:f"=="" @( \
    273 			echo Could not find %%f in PATH && \
    274 			echo Optional targets may fail. \
    275 		) else @( \
    276 			echo Found %%~$$PATH:f \
    277 		) \
    278 	) \
    279 	)
    280 
    281 
    282 prep:: check-utils
    283 
    284 show-cmds:
    285 	@$(ECHO) C2OBJ=$(C2OBJ_C:\=\\)
    286 	@$(ECHO).
    287 	@$(ECHO) EXECONLINK=$(EXECONLINK_C)
    288 	@$(ECHO).
    289 	@$(ECHO) EXEGUILINK=$(EXEGUILINK_C)
    290 	@$(ECHO).
    291 	@$(ECHO) DLLCONLINK=$(DLLCONLINK_C)
    292 	@$(ECHO).
    293 	@$(ECHO) DLLGUILINK=$(DLLGUILINK_C)
    294 	@$(ECHO).
    295 	@$(ECHO) LIBGUI=$(LIBGUI_C)
    296 	@$(ECHO).
    297 	@$(ECHO) LIBCON=$(LIBCON_C)
    298 
    299 prep:: show-cmds
    300 
    301 !endif				# RECURSE
    302 
    303 {}.c{$(OBJ)}.obj::
    304 	$(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(localcflags) $(MPOPT) @<<
    305 $<
    306 <<
    307 
    308 {$(OBJ)}.c{$(OBJ)}.obj::
    309 	$(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(extcflags) $(MPOPT) @<<
    310 $<
    311 <<
    312 
    313 {}.cpp{$(OBJ)}.obj::
    314 	$(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(localcflags) $(MPOPT) @<<
    315 $<
    316 <<
    317 
    318 {$(OBJ)}.cpp{$(OBJ)}.obj::
    319 	$(C2OBJ_C) /Fd$(OBJ)\ /Fo$(OBJ)\ $(extcflags) $(MPOPT) @<<
    320 $<
    321 <<
    322 
    323 {}.hin{$(INCDIR)}.h:
    324 	$(CP) $< $@
    325 
    326 {}.h{$(INCDIR)}.h:
    327 	$(CP) $< $@
    328 
    329 {}.h{$(INCDIR)\krb5}.h:
    330 	$(CP) $< $@
    331 
    332 {$(OBJ)}.h{$(INCDIR)}.h:
    333 	$(CP) $< $@
    334 
    335 {$(OBJ)}.x{$(OBJ)}.c:
    336 	$(CP) $< $@
    337 
    338 {$(OBJ)}.hx{$(INCDIR)}.h:
    339 	$(CP) $< $@
    340 
    341 {$(OBJ)}.hx{$(OBJ)}.h:
    342 	$(CP) $< $@
    343 
    344 {}.rc{$(OBJ)}.res:
    345 	$(RC2RES)
    346 
    347 #----------------------------------------------------------------------
    348 # Announce the build directory
    349 
    350 !ifdef RELDIR
    351 all:: announce
    352 
    353 all-tools:: announce-tools
    354 
    355 test:: announce
    356 
    357 clean:: announce
    358 
    359 announce:
    360 	@echo.
    361 	@echo --------- Entering $(RELDIR:\= ):
    362 
    363 announce-tools:
    364 	@echo.
    365 	@echo --------- Entering $(RELDIR:\= ) tools:
    366 !endif
    367 
    368 #----------------------------------------------------------------------
    369 # Create any required directories if they don't already exist
    370 
    371 prep:: mkdirs
    372 
    373 mkdirs:
    374 !  if !exist($(OBJ))
    375 	$(MKDIR) $(OBJ)
    376 !  endif
    377 !  if !exist($(DESTDIR))
    378 	$(MKDIR) $(DESTDIR)
    379 !  endif
    380 !  if !exist($(LIBDIR))
    381 	$(MKDIR) $(LIBDIR)
    382 !  endif
    383 !  if !exist($(BINDIR))
    384 	$(MKDIR) $(BINDIR)
    385 !  endif
    386 !  if !exist($(PLUGINDIR))
    387 	$(MKDIR) $(PLUGINDIR)
    388 !  endif
    389 !  if !exist($(INCDIR))
    390 	$(MKDIR) $(INCDIR)
    391 !  endif
    392 !  if !exist($(DOCDIR))
    393 	$(MKDIR) $(DOCDIR)
    394 !  endif
    395 !  if !exist($(INCDIR)\gssapi)
    396 	$(MKDIR) $(INCDIR)\gssapi
    397 !  endif
    398 !  if !exist($(INCDIR)\hcrypto)
    399 	$(MKDIR) $(INCDIR)\hcrypto
    400 !  endif
    401 !  if !exist($(INCDIR)\kadm5)
    402 	$(MKDIR) $(INCDIR)\kadm5
    403 !  endif
    404 !  if !exist($(INCDIR)\krb5)
    405 	$(MKDIR) $(INCDIR)\krb5
    406 !  endif
    407 
    408 #----------------------------------------------------------------------
    409 # If SUBDIRS is defined, we should recurse into the subdirectories
    410 
    411 !ifdef SUBDIRS
    412 subdirs:
    413 	@for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) && popd) || exit /b 1
    414 
    415 clean-subdirs:
    416 	@for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) clean && popd) || exit /b 1
    417 
    418 test-subdirs:
    419 	@for %%f in ( $(SUBDIRS) ) do @ (pushd %%f && $(RMAKE) test && popd) || exit /b 1
    420 
    421 all:: subdirs
    422 
    423 clean:: clean-subdirs
    424 
    425 test:: test-subdirs
    426 
    427 !endif
    428 
    429 #----------------------------------------------------------------------
    430 # Clean targets
    431 
    432 !ifdef CLEANFILES
    433 clean::
    434 	-$(RM) $(CLEANFILES)
    435 !endif
    436 !ifdef RELDIR
    437 clean::
    438 	-$(RM) $(OBJ)\*.*
    439 !endif
    440 
    441 .SUFFIXES: .c .cpp .hin .h .x .hx
    442 
    443 #----------------------------------------------------------------------
    444 # Manifest handling
    445 #
    446 # Starting with Visual Studio 8, the C compiler and the linker
    447 # generate manifests so that the applications will link with the
    448 # correct side-by-side DLLs at run-time.  These are required for
    449 # correct operation under Windows XP and later.  We also have custom
    450 # manifests which need to be merged with the manifests that VS
    451 # creates.
    452 #
    453 # The syntax for invoking the _VC_MANIFEST_EMBED_FOO macro is:
    454 # $(_VC_MANIFEST_EMBED_???) <additional manifests>
    455 #
    456 
    457 MT=mt.exe -nologo
    458 
    459 _VC_MANIFEST_EMBED_EXE= \
    460 ( if exist $@.manifest $(MT) -outputresource:$@;1 -manifest $@.manifest $(APPMANIFEST) )
    461 
    462 _VC_MANIFEST_EMBED_EXE_NOHEIM= \
    463 ( if exist $@.manifest $(MT) -outputresource:$@;1 -manifest $@.manifest )
    464 
    465 _VC_MANIFEST_EMBED_DLL= \
    466 ( if exist $@.manifest $(MT) -outputresource:$@;2 -manifest $@.manifest )
    467 
    468 _MERGE_MANIFEST_DLL= \
    469 ( $(MT) -inputresource:$@;2 -manifest $(APPMANIFEST) -outputresource:$@;2 )
    470 
    471 _INSERT_APPMANIFEST_DLL= \
    472 ( $(MT) -manifest $(APPMANIFEST) -outputresource:$@;2 )
    473 
    474 # Note that if you are merging manifests, then the VS generated
    475 # manifest should be cleaned up after calling _VC_MANIFEST_EMBED_???.
    476 # This ensures that even if the DLL or EXE is executed in-place, the
    477 # embedded manifest will be used.  Otherwise the $@.manifest file will
    478 # be used.
    479 
    480 _VC_MANIFEST_CLEAN= \
    481 ( if exist $@.manifest $(RM) $@.manifest )
    482 
    483 # End of manifest handling
    484 
    485 #----------------------------------------------------------------------
    486 # Code and assembly signing
    487 #
    488 # SIGNTOOL_C is any set of options required for certificate/private
    489 # key selection for code signging.
    490 #
    491 # SIGNTOOL_O is any set of additional options to signtool.exe
    492 #
    493 # SIGNTOOL_T is the timestamp option
    494 
    495 !ifdef CODESIGN
    496 _CODESIGN=( $(CODESIGN) $@ )
    497 !else
    498 
    499 !ifdef SIGNTOOL_C
    500 
    501 !ifndef SIGNTOOL_T
    502 SIGNTOOL_T=/t http://timestamp.verisign.com/scripts/timstamp.dll
    503 !endif
    504 
    505 _CODESIGN=( $(SIGNTOOL) sign $(SIGNTOOL_O) $(SIGNTOOL_T) $(SIGNTOOL_C) /v $@ )
    506 !else
    507 _CODESIGN=( echo Skipping code sign )
    508 !endif
    509 
    510 !endif
    511 
    512 #----------------------------------------------------------------------
    513 # Convenience macros for preparing EXEs and DLLs.  These are multiline
    514 # macros that deal with manifests and code signing.  Unless we need to
    515 # include custom manifests, these are what we should be using to
    516 # prepare binaries.
    517 
    518 EXEPREP=\
    519 ( $(_VC_MANIFEST_EMBED_EXE) && $(_VC_MANIFEST_CLEAN) && $(_CODESIGN) ) || ( $(RM) $@ && exit /b 1 )
    520 
    521 EXEPREP_NOHEIM=\
    522 ( $(_VC_MANIFEST_EMBED_EXE_NOHEIM) && $(_VC_MANIFEST_CLEAN) && $(_CODESIGN) ) || ( $(RM) $@ && exit /b 1 )
    523 
    524 EXEPREP_NODIST=\
    525 ( $(_VC_MANIFEST_EMBED_EXE_NOHEIM) && $(_VC_MANIFEST_CLEAN) ) || ( $(RM) $@ && exit /b 1 )
    526 
    527 DLLPREP=\
    528 ( $(_VC_MANIFEST_EMBED_DLL) && $(_VC_MANIFEST_CLEAN) && $(_CODESIGN) ) || ( $(RM) $@ && exit /b 1 )
    529 
    530 DLLPREP_NODIST=\
    531 ( $(_VC_MANIFEST_EMBED_DLL) && $(_VC_MANIFEST_CLEAN) ) || ( $(RM) $@ && exit /b 1 )
    532 
    533 DLLPREP_MERGE=\
    534 ( ( $(_MERGE_MANIFEST_DLL) || $(_INSERT_APPMANIFEST_DLL) ) && $(_CODESIGN) ) || ( $(RM) $@ && exit /b 1 )
    535 
    536 #----------------------------------------------------------------------
    537 # Convenience macros for import libraries and assemblies
    538 #
    539 
    540 LIBASN1	    =$(LIBDIR)\libasn1.lib
    541 LIBCOMERR   =$(LIBDIR)\libcom_err.lib
    542 LIBEDITLINE =$(LIBDIR)\libeditline.lib
    543 LIBGSSAPI   =$(LIBDIR)\libgssapi.lib
    544 LIBHCRYPTO  =$(LIBDIR)\libhcrypto.lib
    545 LIBHDB	    =$(LIBDIR)\libhdb.lib
    546 LIBHEIMBASE =$(LIBDIR)\libheimbase.lib
    547 LIBHEIMDAL  =$(LIBDIR)\heimdal.lib
    548 LIBHEIMIPCC =$(LIBDIR)\libheim-ipcc.lib
    549 LIBHEIMIPCS =$(LIBDIR)\libheim-ipcs.lib
    550 LIBHEIMNTLM =$(LIBDIR)\libheimntlm.lib
    551 LIBHX509    =$(LIBDIR)\libhx509.lib
    552 LIBKADM5CLNT=$(LIBDIR)\libkadm5clnt.lib
    553 LIBKADM5SRV =$(LIBDIR)\libkadm5srv.lib
    554 LIBKDC	    =$(LIBDIR)\libkdc.lib
    555 LIBLTM	    =$(LIBDIR)\libltm.lib
    556 LIBKRB5	    =$(LIBDIR)\libkrb5.lib
    557 LIBRFC3961  =$(LIBDIR)\librfc3961.lib
    558 LIBROKEN    =$(LIBDIR)\libroken.lib
    559 LIBSL	    =$(LIBDIR)\libsl.lib
    560 LIBSQLITE   =$(LIBDIR)\libsqlite.lib
    561 LIBVERS	    =$(LIBDIR)\libvers.lib
    562 LIBWIND	    =$(LIBDIR)\libwind.lib
    563 
    564 ASMKRBNAME  =Heimdal.Kerberos
    565 ASMGSSNAME  =Heimdal.GSSAPI
    566 APPMANIFEST =$(INCDIR)\Heimdal.Application.$(MCPU).manifest
    567 
    568