cryptopp/TestScripts/cryptest-windows.pl

42 lines
1.7 KiB
Perl
Executable File

#!/usr/bin/env perl
# cryptest-windows.sh - written and placed in public domain by Jeffrey Walton and Uri Blumenthal.
# Thanks to Grant McLean on Stack Overflow for help with Perl and string handling.
# Copyright assigned to Crypto++ project.
# This is a test script that can be used on some Windows machines to automate building the
# library and running the self test with various combinations of flags, options, and conditions.
# For more details, see http://cryptopp.com/wiki/cryptest-windows.pl.
# To run the script, copy cryptest-windows.pl from TestScripts to the root and then perform the following:
# .\cryptest-windows.pl
use strict;
use warnings;
# Clean previous artifacts
system('rmdir.exe', '/q', '/s', "Win32", "x64", "ipch");
system('nmake.exe', '/f', 'cryptest.nmake', 'clean');
# Enable multiple jobs in Nmake
ENV{CL}="/MP";
# Perl and redirection appears hopelessy broke or hopelessly complex. Take your pick.
my $LOG_FILE = "cryptest-result.txt";
system('del.exe', '/q', "$LOG_FILE");
# Choices include SSE2, AVX (VS2013) and AVX2 (VS2015)
my $ARCH = "/arch:AVX";
my $DEBUG_RUNTIME_CXXFLAG = "/MDd";
my $RELEASE_RUNTIME_CXXFLAG = "/MD";
my $BASE_CXXFLAGS = "/nologo /W4 /wd4511 /D_MBCS /Zi /TP /GR /EHsc /MP /fp:precise /FI sdkddkver.h";
my $DEBUG_CXXFLAGS = "$BASE_CXXFLAGS $DEBUG_RUNTIME_CXXFLAG /DDEBUG /D_DEBUG /Oi /Oy- /Od";
my $RELEASE_CXXFLAGS = "$BASE_CXXFLAGS $RELEASE_RUNTIME_CXXFLAG /DNDEBUG /D_NDEBUG /Oi /Oy /O2";
my BASE_LDFLAGS = "";
system('nmake.exe', '/f', 'cryptest.nmake', 'clean');
my $ret = system('nmake.exe', '/f', 'cryptest.nmake', "CXXFLAGS=\"$DEBUG_CXXFLAGS $ARCH\"");