ext-cryptopp/cryptest.nmake
2016-04-26 20:21:00 -04:00

128 lines
6.7 KiB
Plaintext

# cryptest.nmake - written and placed in public domain by Jeffrey Walton.
# Copyright assigned to the Crypto++ project.
# This makefile is used for testing and building cryptest.exe under nmake. Open a
# Visual Studio Developer Prompt and then run "nmake /f cryptest.nmake". The build
# procedure will reveal not-so-readily-apparent problems under Microsoft ARM and
# Metro UI apps.
# The makefile is not intended for production use, though it may be used as a starting point.
# For example, you can add switches like /MT and /MTd for dynamic runtime linking against
# the Microsoft C++ Runtime libraries. The resulting cryptlib.lib may be suitable as a
# starting point for a DLL project using Crypto++.
# The list of LIB_SRCS and TEST_SRCS was generated under Linux with "make sources". The list of
# LIB_OBJS and TEST_OBJS was generated under Linux with "make sources | sed 's|.cpp|.obj|g'".
# You may need to remove some source and object files. For example, rdrand.cpp and rdrand.obj
# should be removed if you are testing under ARM or Windows Phone. You may need to add some
# source files. For example, fipstest.cpp and fipstest.obj should be added to the TEST_SRCS
# and TEST_OBJS. You are also free to add files to the list. For example, you can remove
# rdrand.cpp, build it using NASM, and then include the NASM object file rdrand_x86.obj or
# rdrand_x64.obj.
# To test debug builds, use the following CXXFLAGS:
# - /DDEBUG /D_DEBUG /Oi /Oy- /Od
# To test release builds, use the following CXXFLAGS:
# - /DNDEBUG /D_NDEBUG /Oi /Oy /O2
# To test Windows Store Apps, use the following CXXFLAGS:
# - /DWINAPI_FAMILY=WINAPI_FAMILY_APP
!MESSAGE
!MESSAGE ******************************
!MESSAGE Platform is $(PLATFORM)
!MESSAGE ******************************
!MESSAGE
LIB_SRCS = cryptlib.cpp cpu.cpp shacal2.cpp md5.cpp shark.cpp zinflate.cpp gf2n.cpp salsa.cpp xtr.cpp oaep.cpp rc2.cpp default.cpp wait.cpp wake.cpp twofish.cpp iterhash.cpp adler32.cpp elgamal.cpp marss.cpp blowfish.cpp ecp.cpp filters.cpp strciphr.cpp camellia.cpp ida.cpp zlib.cpp des.cpp crc.cpp algparam.cpp dessp.cpp tea.cpp eax.cpp network.cpp emsa2.cpp pkcspad.cpp squaretb.cpp idea.cpp authenc.cpp hmac.cpp zdeflate.cpp xtrcrypt.cpp mars.cpp rc5.cpp queue.cpp hrtimer.cpp vmac.cpp eprecomp.cpp hex.cpp tiger.cpp dsa.cpp sha.cpp fips140.cpp gzip.cpp seal.cpp blake2.cpp files.cpp base32.cpp tigertab.cpp sharkbox.cpp safer.cpp randpool.cpp esign.cpp arc4.cpp osrng.cpp skipjack.cpp seed.cpp integer.cpp sha3.cpp sosemanuk.cpp bfinit.cpp rabin.cpp 3way.cpp rw.cpp rsa.cpp rdtables.cpp gost.cpp socketft.cpp tftables.cpp nbtheory.cpp panama.cpp modes.cpp rijndael.cpp casts.cpp chacha.cpp gfpcrypt.cpp dll.cpp ec2n.cpp polynomi.cpp blumshub.cpp algebra.cpp basecode.cpp base64.cpp cbcmac.cpp rc6.cpp dh2.cpp gf256.cpp mqueue.cpp misc.cpp pssr.cpp channels.cpp cast.cpp rng.cpp square.cpp asn.cpp whrlpool.cpp md4.cpp dh.cpp ccm.cpp md2.cpp mqv.cpp gf2_32.cpp ttmac.cpp luc.cpp trdlocal.cpp pubkey.cpp gcm.cpp ripemd.cpp eccrypto.cpp serpent.cpp cmac.cpp
LIB_OBJS = cryptlib.obj cpu.obj shacal2.obj md5.obj shark.obj zinflate.obj gf2n.obj salsa.obj xtr.obj oaep.obj rc2.obj default.obj wait.obj wake.obj twofish.obj iterhash.obj adler32.obj elgamal.obj marss.obj blowfish.obj ecp.obj filters.obj strciphr.obj camellia.obj ida.obj zlib.obj des.obj crc.obj algparam.obj dessp.obj tea.obj eax.obj network.obj emsa2.obj pkcspad.obj squaretb.obj idea.obj authenc.obj hmac.obj zdeflate.obj xtrcrypt.obj mars.obj rc5.obj queue.obj hrtimer.obj vmac.obj eprecomp.obj hex.obj tiger.obj dsa.obj sha.obj fips140.obj gzip.obj seal.obj blake2.obj files.obj base32.obj tigertab.obj sharkbox.obj safer.obj randpool.obj esign.obj arc4.obj osrng.obj skipjack.obj seed.obj integer.obj sha3.obj sosemanuk.obj bfinit.obj rabin.obj 3way.obj rw.obj rsa.obj rdtables.obj gost.obj socketft.obj tftables.obj nbtheory.obj panama.obj modes.obj rijndael.obj casts.obj chacha.obj gfpcrypt.obj dll.obj ec2n.obj polynomi.obj blumshub.obj algebra.obj basecode.obj base64.obj cbcmac.obj rc6.obj dh2.obj gf256.obj mqueue.obj misc.obj pssr.obj channels.obj cast.obj rng.obj square.obj asn.obj whrlpool.obj md4.obj dh.obj ccm.obj md2.obj mqv.obj gf2_32.obj ttmac.obj luc.obj trdlocal.obj pubkey.obj gcm.obj ripemd.obj eccrypto.obj serpent.obj cmac.obj
TEST_SRCS = bench1.cpp bench2.cpp test.cpp validat1.cpp validat2.cpp validat3.cpp datatest.cpp regtest.cpp fipsalgt.cpp dlltest.cpp fipstest.cpp
TEST_OBJS = bench1.obj bench2.obj test.obj validat1.obj validat2.obj validat3.obj datatest.obj regtest.obj fipsalgt.obj dlltest.obj fipstest.obj
CXX = cl.exe
LD = link.exe
AR = lib.exe
RM = del.exe
# For Windows Store app add /DWINAPI_FAMILY=WINAPI_FAMILY_APP to CXXFLAGS
CXXFLAGS = /nologo /DUSE_PRECOMPILED_HEADERS /Zi /TP /EHsc /MT /Yu"pch.h"
LDFLAGS = /nologo /SUBSYSTEM:CONSOLE
ARFLAGS = /nologo
LDLIBS =
!IF "$(PLATFORM)" == "x86"
AS = ml.exe
ASFLAGS = /nologo /D_M_X86 /W3 /Cx /Zi /safeseh
LIB_SRCS = $(LIB_SRCS) rdrand.asm x64dll.asm
LIB_OBJS = $(LIB_OBJS) rdrand.obj x64dll.obj
LDLIBS = $(LDLIBS) ws2_32.lib
!ENDIF
!IF "$(PLATFORM)" == "x64"
AS = ml64.exe
ASFLAGS = /nologo /D_M_X64 /W3 /Cx /Zi
LIB_SRCS = $(LIB_SRCS) rdrand.asm x64masm.asm x64dll.asm
LIB_OBJS = $(LIB_OBJS) rdrand.obj x64masm.obj x64dll.obj
LDLIBS = $(LDLIBS) ws2_32.lib
!ENDIF
!IF "$(PLATFORM)" == "ARM"
# CXXFLAGS = $(CXXFLAGS) /D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1
# LDLIBS = $(LDLIBS) ws2_32.lib
!ENDIF
all: cryptest.exe
cryptest.exe: pch.pch cryptlib.lib $(TEST_OBJS)
$(LD) $(LDFLAGS) cryptlib.lib $(TEST_OBJS) $(LDLIBS) /out:$@
cryptlib.lib: pch.pch $(LIB_OBJS)
$(AR) $(ARFLAGS) $(LIB_OBJS) /out:$@
clean:
$(RM) /F /Q pch.pch $(LIB_OBJS) cryptlib.lib $(TEST_OBJS) cryptest.exe
# Precompiled header
pch.pch: pch.h pch.cpp
$(CXX) $(CXXFLAGS) /Yc"pch.h" /Fp"pch.pch" /c pch.cpp
# No precompiled headers
iterhash.obj:
$(CXX) $(CXXFLAGS) /Y- /c iterhash.cpp
dll.obj:
$(CXX) $(CXXFLAGS) /Y- /c dll.cpp
bench1.obj:
$(CXX) $(CXXFLAGS) /Y- /c bench1.cpp
bench2.obj:
$(CXX) $(CXXFLAGS) /Y- /c bench2.cpp
validat1.obj:
$(CXX) $(CXXFLAGS) /Y- /c validat1.cpp
validat2.obj:
$(CXX) $(CXXFLAGS) /Y- /c validat2.cpp
validat3.obj:
$(CXX) $(CXXFLAGS) /Y- /c validat3.cpp
datatest.obj:
$(CXX) $(CXXFLAGS) /Y- /c datatest.cpp
dlltest.obj:
$(CXX) $(CXXFLAGS) /Y- /c dlltest.cpp
fipsalgt.obj:
$(CXX) $(CXXFLAGS) /Y- /c fipsalgt.cpp
regtest.obj:
$(CXX) $(CXXFLAGS) /Y- /c regtest.cpp
test.obj:
$(CXX) $(CXXFLAGS) /Y- /c test.cpp
# Built for x86/x64
rdrand.obj:
$(AS) $(ASFLAGS) /Fo rdrand.obj /c rdrand.asm
x64masm.obj:
$(AS) $(ASFLAGS) /Fo x64masm.obj /c x64masm.asm
x64dll.obj:
$(AS) $(ASFLAGS) /Fo x64dll.obj /c x64dll.asm
.cpp.obj:
$(CXX) $(CXXFLAGS) /c $<