Home | History | Annotate | Line # | Download | only in windows
      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 "NTMakefile.sdk"
     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.verisign.com/scripts/timstamp.dll
    514 !endif
    515 !ifndef SIGNTOOL_T_SHA256
    516 SIGNTOOL_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)" != ""
    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 LIBHCRYPTO  =$(LIBDIR)\libhcrypto.lib
    581 LIBHDB	    =$(LIBDIR)\libhdb.lib
    582 LIBHEIMBASE =$(LIBDIR)\libheimbase.lib
    583 LIBHEIMDAL  =$(LIBDIR)\heimdal.lib
    584 LIBHEIMIPCC =$(LIBDIR)\libheim-ipcc.lib
    585 LIBHEIMIPCS =$(LIBDIR)\libheim-ipcs.lib
    586 LIBHEIMNTLM =$(LIBDIR)\libheimntlm.lib
    587 LIBHX509    =$(LIBDIR)\libhx509.lib
    588 LIBKADM5CLNT=$(LIBDIR)\libkadm5clnt.lib
    589 LIBKADM5SRV =$(LIBDIR)\libkadm5srv.lib
    590 LIBKDC	    =$(LIBDIR)\libkdc.lib
    591 LIBLTM	    =$(LIBDIR)\libltm.lib
    592 LIBKRB5	    =$(LIBDIR)\libkrb5.lib
    593 LIBRFC3961  =$(LIBDIR)\librfc3961.lib
    594 LIBROKEN    =$(LIBDIR)\libroken.lib
    595 LIBSL	    =$(LIBDIR)\libsl.lib
    596 LIBSQLITE   =$(LIBDIR)\libsqlite.lib
    597 LIBVERS	    =$(LIBDIR)\libvers.lib
    598 LIBWIND	    =$(LIBDIR)\libwind.lib
    599 
    600 !ifdef VER_DEBUG
    601 ASM_DBG=.Debug
    602 !endif
    603 !ifdef VER_PRERELEASE
    604 ASM_PRE=.Pre
    605 !endif
    606 !ifdef VER_PRIVATE
    607 ASM_PVT=.Private
    608 !endif
    609 !ifdef VER_SPECIAL
    610 ASM_SPC=.Special
    611 !endif
    612 
    613 ASMKRBNAME  =Heimdal.Kerberos$(ASM_SPC)$(ASM_PVT)$(ASM_PRE)$(ASM_DBG)
    614 APPMANIFEST =$(INCDIR)\Heimdal.Application.$(MCPU).manifest
    615 
    616