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