From 0d46071f78b35b22b9bb6521e9535aaab853d8d8 Mon Sep 17 00:00:00 2001 From: cvs2svn Date: Sun, 13 Apr 2014 15:16:39 +0000 Subject: This commit was manufactured by cvs2git to create tag 'openssl_1_0_1_g'. --- src/lib/libcrypto/util/arx.pl | 15 - src/lib/libcrypto/util/checkhash.pl | 222 ------------- src/lib/libcrypto/util/copy.pl | 70 ++++ src/lib/libcrypto/util/deltree.com | 34 -- src/lib/libcrypto/util/extract-section.pl | 12 + src/lib/libcrypto/util/fipslink.pl | 78 ----- src/lib/libcrypto/util/mkrc.pl | 71 ++++ src/lib/libcrypto/util/mksdef.pl | 87 ----- src/lib/libcrypto/util/pl/BC-16.pl | 151 --------- src/lib/libcrypto/util/pl/VC-16.pl | 177 ---------- src/lib/libcrypto/util/pl/VC-32-GMAKE.pl | 222 ------------- src/lib/libcrypto/util/pl/VC-CE.pl | 116 ------- src/lib/libcrypto/util/pl/netware.pl | 532 ++++++++++++++++++++++++++++++ 13 files changed, 685 insertions(+), 1102 deletions(-) delete mode 100644 src/lib/libcrypto/util/arx.pl delete mode 100644 src/lib/libcrypto/util/checkhash.pl create mode 100644 src/lib/libcrypto/util/copy.pl delete mode 100644 src/lib/libcrypto/util/deltree.com create mode 100644 src/lib/libcrypto/util/extract-section.pl delete mode 100644 src/lib/libcrypto/util/fipslink.pl create mode 100755 src/lib/libcrypto/util/mkrc.pl delete mode 100644 src/lib/libcrypto/util/mksdef.pl delete mode 100644 src/lib/libcrypto/util/pl/BC-16.pl delete mode 100644 src/lib/libcrypto/util/pl/VC-16.pl delete mode 100644 src/lib/libcrypto/util/pl/VC-32-GMAKE.pl delete mode 100644 src/lib/libcrypto/util/pl/VC-CE.pl create mode 100644 src/lib/libcrypto/util/pl/netware.pl (limited to 'src/lib/libcrypto/util') diff --git a/src/lib/libcrypto/util/arx.pl b/src/lib/libcrypto/util/arx.pl deleted file mode 100644 index ce62625c33..0000000000 --- a/src/lib/libcrypto/util/arx.pl +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/perl - -# Simple perl script to wrap round "ar" program and exclude any -# object files in the environment variable EXCL_OBJ - -map { s/^.*\/([^\/]*)$/$1/ ; $EXCL{$_} = 1} split(' ', $ENV{EXCL_OBJ}); - -#my @ks = keys %EXCL; -#print STDERR "Excluding: @ks \n"; - -my @ARGS = grep { !exists $EXCL{$_} } @ARGV; - -system @ARGS; - -exit $? >> 8; diff --git a/src/lib/libcrypto/util/checkhash.pl b/src/lib/libcrypto/util/checkhash.pl deleted file mode 100644 index c61fa72178..0000000000 --- a/src/lib/libcrypto/util/checkhash.pl +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/env perl -w - -my $package = caller; - -if (!(defined $package)) - { - my $retval = check_hashes(@ARGV); - exit $retval; - } - -1; - -sub check_hashes - { - - my @args = @_; - - my $change_dir = ""; - my $check_program = "sha/fips_standalone_sha1"; - - my $verbose = 0; - my $badfiles = 0; - my $rebuild = 0; - my $force_rewrite = 0; - my $hash_file = "fipshashes.c"; - my $recurse = 0; - - my @fingerprint_files; - - while (@args) - { - my $arg = $args[0]; - if ($arg eq "-chdir") - { - shift @args; - $change_dir = shift @args; - } - elsif ($arg eq "-rebuild") - { - shift @args; - $rebuild = 1; - } - elsif ($arg eq "-verbose") - { - shift @args; - $verbose = 1; - } - elsif ($arg eq "-force-rewrite") - { - shift @args; - $force_rewrite = 1; - } - elsif ($arg eq "-hash_file") - { - shift @args; - $hash_file = shift @args; - } - elsif ($arg eq "-recurse") - { - shift @args; - $recurse = 1; - } - elsif ($arg eq "-program_path") - { - shift @args; - $check_program = shift @args; - } - else - { - print STDERR "Unknown Option $arg"; - return 1; - } - - } - - chdir $change_dir if $change_dir ne ""; - - if ($recurse) - { - @fingerprint_files = ("fingerprint.sha1", - <*/fingerprint.sha1>); - } - else - { - push @fingerprint_files, $hash_file; - } - - foreach $fp (@fingerprint_files) - { - if (!open(IN, "$fp")) - { - print STDERR "Can't open file $fp"; - return 1; - } - print STDERR "Opening Fingerprint file $fp\n" if $verbose; - my $dir = $fp; - $dir =~ s/[^\/]*$//; - while () - { - chomp; - if (!(($file, $hash) = /^\"HMAC-SHA1\((.*)\)\s*=\s*(\w*)\",$/)) - { - /^\"/ || next; - print STDERR "FATAL: Invalid syntax in file $fp\n"; - print STDERR "Line:\n$_\n"; - fatal_error(); - return 1; - } - if (!$rebuild && length($hash) != 40) - { - print STDERR "FATAL: Invalid hash length in $fp for file $file\n"; - fatal_error(); - return 1; - } - push @hashed_files, "$dir$file"; - if (exists $hashes{"$dir$file"}) - { - print STDERR "FATAL: Duplicate Hash file $dir$file\n"; - fatal_error(); - return 1; - } - if (! -r "$dir$file") - { - print STDERR "FATAL: Can't access $dir$file\n"; - fatal_error(); - return 1; - } - $hashes{"$dir$file"} = $hash; - } - close IN; - } - - @checked_hashes = `$check_program @hashed_files`; - - if ($? != 0) - { - print STDERR "Error running hash program $check_program\n"; - fatal_error(); - return 1; - } - - if (@checked_hashes != @hashed_files) - { - print STDERR "FATAL: hash count incorrect\n"; - fatal_error(); - return 1; - } - - foreach (@checked_hashes) - { - chomp; - if (!(($file, $hash) = /^HMAC-SHA1\((.*)\)\s*=\s*(\w*)$/)) - { - print STDERR "FATAL: Invalid syntax in file $fp\n"; - print STDERR "Line:\n$_\n"; - fatal_error(); - return 1; - } - if (length($hash) != 40) - { - print STDERR "FATAL: Invalid hash length for file $file\n"; - fatal_error(); - return 1; - } - if ($hash ne $hashes{$file}) - { - if ($rebuild) - { - print STDERR "Updating hash on file $file\n"; - $hashes{$file} = $hash; - } - else - { - print STDERR "Hash check failed for file $file\n"; - } - $badfiles++; - } - elsif ($verbose) - { print "Hash Check OK for $file\n";} - } - - - if ($badfiles && !$rebuild) - { - print STDERR "FATAL: hash mismatch on $badfiles files\n"; - fatal_error(); - return 1; - } - - if ($badfiles || $force_rewrite) - { - print "Updating Hash file $hash_file\n"; - if (!open(OUT, ">$hash_file")) - { - print STDERR "Error rewriting $hash_file"; - return 1; - } - print OUT "const char * const FIPS_source_hashes[] = {\n"; - foreach (@hashed_files) - { - print OUT "\"HMAC-SHA1($_)= $hashes{$_}\",\n"; - } - print OUT "};\n"; - close OUT; - } - - if (!$badfiles) - { - print "FIPS hash check successful\n"; - } - - return 0; - - } - - -sub fatal_error - { - print STDERR "*** Your source code does not match the FIPS validated source ***\n"; - } - - diff --git a/src/lib/libcrypto/util/copy.pl b/src/lib/libcrypto/util/copy.pl new file mode 100644 index 0000000000..eba6d5815e --- /dev/null +++ b/src/lib/libcrypto/util/copy.pl @@ -0,0 +1,70 @@ +#!/usr/local/bin/perl + +use Fcntl; + + +# copy.pl + +# Perl script 'copy' comment. On Windows the built in "copy" command also +# copies timestamps: this messes up Makefile dependencies. + +my $stripcr = 0; + +my $arg; + +foreach $arg (@ARGV) { + if ($arg eq "-stripcr") + { + $stripcr = 1; + next; + } + $arg =~ s|\\|/|g; # compensate for bug/feature in cygwin glob... + foreach (glob $arg) + { + push @filelist, $_; + } +} + +$fnum = @filelist; + +if ($fnum <= 1) + { + die "Need at least two filenames"; + } + +$dest = pop @filelist; + +if ($fnum > 2 && ! -d $dest) + { + die "Destination must be a directory"; + } + +foreach (@filelist) + { + if (-d $dest) + { + $dfile = $_; + $dfile =~ s|^.*[/\\]([^/\\]*)$|$1|; + $dfile = "$dest/$dfile"; + } + else + { + $dfile = $dest; + } + sysopen(IN, $_, O_RDONLY|O_BINARY) || die "Can't Open $_"; + sysopen(OUT, $dfile, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY) + || die "Can't Open $dfile"; + while (sysread IN, $buf, 10240) + { + if ($stripcr) + { + $buf =~ tr/\015//d; + } + syswrite(OUT, $buf, length($buf)); + } + close(IN); + close(OUT); + print "Copying: $_ to $dfile\n"; + } + + diff --git a/src/lib/libcrypto/util/deltree.com b/src/lib/libcrypto/util/deltree.com deleted file mode 100644 index 9f36b1a5e9..0000000000 --- a/src/lib/libcrypto/util/deltree.com +++ /dev/null @@ -1,34 +0,0 @@ -$! DELTREE.COM -$ -$ call deltree 'p1' -$ exit $status -$ -$ deltree: subroutine ! P1 is a name of a directory -$ on control_y then goto dt_STOP -$ on warning then goto dt_exit -$ _dt_def = f$trnlnm("SYS$DISK")+f$directory() -$ if f$parse(p1) .eqs. "" then exit -$ set default 'f$parse(p1,,,"DEVICE")''f$parse(p1,,,"DIRECTORY")' -$ p1 = f$parse(p1,,,"NAME") + f$parse(p1,,,"TYPE") -$ _fp = f$parse(".DIR",p1) -$ dt_loop: -$ _f = f$search(_fp) -$ if _f .eqs. "" then goto dt_loopend -$ call deltree [.'f$parse(_f,,,"NAME")']*.* -$ goto dt_loop -$ dt_loopend: -$ _fp = f$parse(p1,".;*") -$ if f$search(_fp) .eqs. "" then goto dt_exit -$ set noon -$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) '_fp' -$ set on -$ delete/nolog '_fp' -$ dt_exit: -$ set default '_dt_def' -$ goto dt_end -$ dt_STOP: -$ set default '_dt_def' -$ stop/id="" -$ exit -$ dt_end: -$ endsubroutine diff --git a/src/lib/libcrypto/util/extract-section.pl b/src/lib/libcrypto/util/extract-section.pl new file mode 100644 index 0000000000..7a0ba4f69a --- /dev/null +++ b/src/lib/libcrypto/util/extract-section.pl @@ -0,0 +1,12 @@ +#!/usr/bin/perl + +while() { + if (/=for\s+comment\s+openssl_manual_section:(\S+)/) + { + print "$1\n"; + exit 0; + } +} + +print "$ARGV[0]\n"; + diff --git a/src/lib/libcrypto/util/fipslink.pl b/src/lib/libcrypto/util/fipslink.pl deleted file mode 100644 index 3597bc1740..0000000000 --- a/src/lib/libcrypto/util/fipslink.pl +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/perl - -sub check_env - { - my @ret; - foreach (@_) - { - die "Environment variable $_ not defined!\n" unless exists $ENV{$_}; - push @ret, $ENV{$_}; - } - return @ret; - } - - -my ($fips_cc,$fips_cc_args, $fips_link,$fips_target, $fips_libdir, $sha1_exe) - = check_env("FIPS_CC", "FIPS_CC_ARGS", "FIPS_LINK", "FIPS_TARGET", - "FIPSLIB_D", "FIPS_SHA1_EXE"); - - - -if (exists $ENV{"PREMAIN_DSO_EXE"}) - { - $fips_premain_dso = $ENV{"PREMAIN_DSO_EXE"}; - } - else - { - $fips_premain_dso = ""; - } - -check_hash($sha1_exe, "fips_premain.c"); -check_hash($sha1_exe, "fipscanister.lib"); - - -print "Integrity check OK\n"; - -print "$fips_cc $fips_cc_args $fips_libdir/fips_premain.c\n"; -system "$fips_cc $fips_cc_args $fips_libdir/fips_premain.c"; -die "First stage Compile failure" if $? != 0; - -print "$fips_link @ARGV\n"; -system "$fips_link @ARGV"; -die "First stage Link failure" if $? != 0; - - -print "$fips_premain_dso $fips_target\n"; -$fips_hash=`$fips_premain_dso $fips_target`; -chomp $fips_hash; -die "Get hash failure" if $? != 0; - - -print "$fips_cc -DHMAC_SHA1_SIG=\\\"$fips_hash\\\" $fips_cc_args $fips_libdir/fips_premain.c\n"; -system "$fips_cc -DHMAC_SHA1_SIG=\\\"$fips_hash\\\" $fips_cc_args $fips_libdir/fips_premain.c"; -die "Second stage Compile failure" if $? != 0; - - -print "$fips_link @ARGV\n"; -system "$fips_link @ARGV"; -die "Second stage Link failure" if $? != 0; - -sub check_hash - { - my ($sha1_exe, $filename) = @_; - my ($hashfile, $hashval); - - open(IN, "${fips_libdir}/${filename}.sha1") || die "Cannot open file hash file ${fips_libdir}/${filename}.sha1"; - $hashfile = ; - close IN; - $hashval = `$sha1_exe ${fips_libdir}/$filename`; - chomp $hashfile; - chomp $hashval; - $hashfile =~ s/^.*=\s+//; - $hashval =~ s/^.*=\s+//; - die "Invalid hash syntax in file" if (length($hashfile) != 40); - die "Invalid hash received for file" if (length($hashval) != 40); - die "***HASH VALUE MISMATCH FOR FILE $filename ***" if ($hashval ne $hashfile); - } - - diff --git a/src/lib/libcrypto/util/mkrc.pl b/src/lib/libcrypto/util/mkrc.pl new file mode 100755 index 0000000000..0ceadcf8d1 --- /dev/null +++ b/src/lib/libcrypto/util/mkrc.pl @@ -0,0 +1,71 @@ +#!/bin/env perl +# +open FD,"crypto/opensslv.h"; +while() { + if (/OPENSSL_VERSION_NUMBER\s+(0x[0-9a-f]+)/i) { + $ver = hex($1); + $v1 = ($ver>>28); + $v2 = ($ver>>20)&0xff; + $v3 = ($ver>>12)&0xff; + $v4 = ($ver>> 4)&0xff; + $beta = $ver&0xf; + $version = "$v1.$v2.$v3"; + if ($beta==0xf) { $version .= chr(ord('a')+$v4-1) if ($v4); } + elsif ($beta==0){ $version .= "-dev"; } + else { $version .= "-beta$beta"; } + last; + } +} +close(FD); + +$filename = $ARGV[0]; $filename =~ /(.*)\.([^.]+)$/; +$basename = $1; +$extname = $2; + +if ($extname =~ /dll/i) { $description = "OpenSSL shared library"; } +else { $description = "OpenSSL application"; } + +print <<___; +#include + +LANGUAGE 0x09,0x01 + +1 VERSIONINFO + FILEVERSION $v1,$v2,$v3,$v4 + PRODUCTVERSION $v1,$v2,$v3,$v4 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x01L +#else + FILEFLAGS 0x00L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + // Required: + VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0" + VALUE "FileDescription", "$description\\0" + VALUE "FileVersion", "$version\\0" + VALUE "InternalName", "$basename\\0" + VALUE "OriginalFilename", "$filename\\0" + VALUE "ProductName", "The OpenSSL Toolkit\\0" + VALUE "ProductVersion", "$version\\0" + // Optional: + //VALUE "Comments", "\\0" + VALUE "LegalCopyright", "Copyright © 1998-2006 The OpenSSL Project. Copyright © 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0" + //VALUE "LegalTrademarks", "\\0" + //VALUE "PrivateBuild", "\\0" + //VALUE "SpecialBuild", "\\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 0x4b0 + END +END +___ diff --git a/src/lib/libcrypto/util/mksdef.pl b/src/lib/libcrypto/util/mksdef.pl deleted file mode 100644 index 065dc675f1..0000000000 --- a/src/lib/libcrypto/util/mksdef.pl +++ /dev/null @@ -1,87 +0,0 @@ - -# Perl script to split libeay32.def into two distinct DEF files for use in -# fipdso mode. It works out symbols in each case by running "link" command and -# parsing the output to find the list of missing symbols then splitting -# libeay32.def based on the result. - - -# Get list of unknown symbols - -my @deferr = `link @ARGV`; - -my $preamble = ""; -my @fipsdll; -my @fipsrest; -my %nosym; - -# Add symbols to a hash for easy lookup - -foreach (@deferr) - { - if (/^.*symbol (\S+)$/) - { - $nosym{$1} = 1; - } - } - -open (IN, "ms/libeay32.def") || die "Can't Open DEF file for spliting"; - -my $started = 0; - -# Parse libeay32.def into two arrays depending on whether the symbol matches -# the missing list. - - -foreach () - { - if (/^\s*(\S+)\s*(\@\S+)\s*$/) - { - $started = 1; - if (exists $nosym{$1}) - { - push @fipsrest, $_; - } - else - { - my $imptmp = sprintf " %-39s %s\n", - "$1=libosslfips.$1", $2; - push @fipsrest, $imptmp; - push @fipsdll, "\t$1\n"; - } - } - $preamble .= $_ unless $started; - } - -close IN; - -# Hack! Add some additional exports needed for libcryptofips.dll -# - -push @fipsdll, "\tOPENSSL_showfatal\n"; -push @fipsdll, "\tOPENSSL_cpuid_setup\n"; - -# Write out DEF files for each array - -write_def("ms/libosslfips.def", "LIBOSSLFIPS", $preamble, \@fipsdll); -write_def("ms/libeayfips.def", "", $preamble, \@fipsrest); - - -sub write_def - { - my ($fnam, $defname, $preamble, $rdefs) = @_; - open (OUT, ">$fnam") || die "Can't Open DEF file $fnam for Writing\n"; - - if ($defname ne "") - { - $preamble =~ s/LIBEAY32/$defname/g; - $preamble =~ s/LIBEAY/$defname/g; - } - print OUT $preamble; - foreach (@$rdefs) - { - print OUT $_; - } - close OUT; - } - - diff --git a/src/lib/libcrypto/util/pl/BC-16.pl b/src/lib/libcrypto/util/pl/BC-16.pl deleted file mode 100644 index 8030653daa..0000000000 --- a/src/lib/libcrypto/util/pl/BC-16.pl +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/local/bin/perl -# VCw16lib.pl - the file for Visual C++ 1.52b for windows, static libraries -# - -$o='\\'; -$cp='copy'; -$rm='del'; - -# C compiler stuff -$cc='bcc'; - -if ($debug) - { $op="-v "; } -else { $op="-O "; } - -$cflags="-d -ml $op -DL_ENDIAN"; -# I add the stack opt -$base_lflags="/c /C"; -$lflags="$base_lflags"; - -if ($win16) - { - $shlib=1; - $cflags.=" -DOPENSSL_SYSNAME_WIN16"; - $app_cflag="-W"; - $lib_cflag="-WD"; - $lflags.="/Twe"; - } -else - { - $cflags.=" -DOENSSL_SYSNAME_MSDOS"; - $lflags.=" /Tde"; - } - -if ($shlib) - { - $mlflags=" /Twd $base_lflags"; # stack if defined in .def file - $libs="libw ldllcew"; - $no_asm=1; - } -else - { $mlflags=''; } - -$obj='.obj'; -$ofile="-o"; - -# EXE linking stuff -$link="tlink"; -$efile=""; -$exep='.exe'; -$ex_libs="CL"; -$ex_libs.=$no_sock?"":" winsock.lib"; - -$app_ex_obj="C0L.obj "; -$shlib_ex_obj="" if ($shlib); - -# static library stuff -$mklib='tlib'; -$ranlib='echo no ranlib'; -$plib=""; -$libp=".lib"; -$shlibp=($shlib)?".dll":".lib"; -$lfile=''; - -$asm='bcc -c -B -Tml'; -$afile='/o'; -if ($no_asm || $fips) - { - $bn_asm_obj=''; - $bn_asm_src=''; - } -elsif ($asmbits == 32) - { - $bn_asm_obj='crypto\bn\asm\x86w32.obj'; - $bn_asm_src='crypto\bn\asm\x86w32.asm'; - } -else - { - $bn_asm_obj='crypto\bn\asm\x86w16.obj'; - $bn_asm_src='crypto\bn\asm\x86w16.asm'; - } - -sub do_lib_rule - { - local($target,$name,$shlib)=@_; - local($ret,$Name); - - $taget =~ s/\//$o/g if $o ne '/'; - ($Name=$name) =~ tr/a-z/A-Z/; - - $ret.="$target: \$(${Name}OBJ)\n"; - $ret.="\t\$(RM) \$(O_$Name)\n"; - - # Due to a pathetic line length limit, I unwrap the args. - local($lib_names)=""; - local($dll_names)=""; - foreach $_ (sort split(/\s+/,$Vars{"${Name}OBJ"})) - { - $lib_names.=" +$_ &\n"; - $dll_names.=" $_\n"; - } - - if (!$shlib) - { - $ret.="\t\$(MKLIB) $target & <<|\n$lib_names\n,\n|\n"; - } - else - { - local($ex)=($Name eq "SSL")?' $(L_CRYPTO) winsock':""; - $ret.="\t\$(LINK) \$(MLFLAGS) @&&|\n"; - $ret.=$dll_names; - $ret.="\n $target\n\n $ex $libs\nms$o${name}16.def;\n|\n"; - ($out_lib=$target) =~ s/O_/L_/; - $ret.="\timplib /nowep $out_lib $target\n\n"; - } - $ret.="\n"; - return($ret); - } - -sub do_link_rule - { - local($target,$files,$dep_libs,$libs,$sha1file,$openssl)=@_; - local($ret,$f,$_,@f); - - $file =~ s/\//$o/g if $o ne '/'; - $n=&bname($target); - $ret.="$target: $files $dep_libs\n"; - $ret.=" \$(LINK) @&&|"; - - # Due to a pathetic line length limit, I have to unwrap the args. - $ret.=" \$(LFLAGS) "; - if ($files =~ /\(([^)]*)\)$/) - { - $ret.=" \$(APP_EX_OBJ)"; - foreach $_ (sort split(/\s+/,$Vars{$1})) - { $ret.="\n $r $_ +"; } - chop($ret); - $ret.="\n"; - } - else - { $ret.="\n $r \$(APP_EX_OBJ) $files\n"; } - $ret.=" $target\n\n $libs\n\n|\n"; - if (defined $sha1file) - { - $ret.=" $openssl sha1 -hmac etaonrishdlcupfm -binary $target > $sha1file"; - } - $ret.="\n"; - return($ret); - } - -1; diff --git a/src/lib/libcrypto/util/pl/VC-16.pl b/src/lib/libcrypto/util/pl/VC-16.pl deleted file mode 100644 index 564ba3fd08..0000000000 --- a/src/lib/libcrypto/util/pl/VC-16.pl +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/local/bin/perl -# VCw16lib.pl - the file for Visual C++ 1.52b for windows, static libraries -# - -$ssl= "ssleay16"; -$crypto="libeay16"; - -$o='\\'; -$cp='copy'; -$rm='del'; - -# C compiler stuff -$cc='cl'; - -$out_def="out16"; -$tmp_def="tmp16"; -$inc_def="inc16"; - -if ($debug) - { - $op="/Od /Zi /Zd"; - $base_lflags="/CO"; - } -else { - $op="/G2 /f- /Ocgnotb2"; - } -$base_lflags.=" /FARCALL /NOLOGO /NOD /SEG:1024 /ONERROR:NOEXE /NOE /PACKC:60000"; -if ($win16) { $base_lflags.=" /PACKD:60000"; } - -$cflags="/ALw /Gx- /Gt256 /Gf $op /W3 /WX -DL_ENDIAN /nologo"; -# I add the stack opt -$lflags="$base_lflags /STACK:20000"; - -if ($win16) - { - $cflags.=" -DOPENSSL_SYSNAME_WIN16"; - $app_cflag="/Gw /FPi87"; - $lib_cflag="/Gw"; - $lib_cflag.=" -D_WINDLL -D_DLL" if $shlib; - $lib_cflag.=" -DWIN16TTY" if !$shlib; - $lflags.=" /ALIGN:256"; - $ex_libs.="oldnames llibcewq libw"; - } -else - { - $no_sock=1; - $cflags.=" -DMSDOS"; - $lflags.=" /EXEPACK"; - $ex_libs.="oldnames.lib llibce.lib"; - } - -if ($shlib) - { - $mlflags="$base_lflags"; - $libs="oldnames ldllcew libw"; - $shlib_ex_obj=""; -# $no_asm=1; - $out_def="out16dll"; - $tmp_def="tmp16dll"; - } -else - { $mlflags=''; } - -$app_ex_obj=""; - -$obj='.obj'; -$ofile="/Fo"; - -# EXE linking stuff -$link="link"; -$efile=""; -$exep='.exe'; -$ex_libs.=$no_sock?"":" winsock"; - -# static library stuff -$mklib='lib /PAGESIZE:1024'; -$ranlib=''; -$plib=""; -$libp=".lib"; -$shlibp=($shlib)?".dll":".lib"; -$lfile=''; - -$asm='ml /Cp /c /Cx'; -$afile='/Fo'; - -$bn_asm_obj=''; -$bn_asm_src=''; -$des_enc_obj=''; -$des_enc_src=''; -$bf_enc_obj=''; -$bf_enc_src=''; - -if (!$no_asm && !$fips) - { - if ($asmbits == 32) - { - $bn_asm_obj='crypto\bn\asm\x86w32.obj'; - $bn_asm_src='crypto\bn\asm\x86w32.asm'; - } - else - { - $bn_asm_obj='crypto\bn\asm\x86w16.obj'; - $bn_asm_src='crypto\bn\asm\x86w16.asm'; - } - } - -sub do_lib_rule - { - local($objs,$target,$name,$shlib)=@_; - local($ret,$Name); - - $taget =~ s/\//$o/g if $o ne '/'; - ($Name=$name) =~ tr/a-z/A-Z/; - -# $target="\$(LIB_D)$o$target"; - $ret.="$target: $objs\n"; -# $ret.="\t\$(RM) \$(O_$Name)\n"; - - # Due to a pathetic line length limit, I unwrap the args. - local($lib_names)=""; - local($dll_names)=" \$(SHLIB_EX_OBJ) +\n"; - ($obj)= ($objs =~ /\((.*)\)/); - foreach $_ (sort split(/\s+/,$Vars{$obj})) - { - $lib_names.="+$_ &\n"; - $dll_names.=" $_ +\n"; - } - - if (!$shlib) - { - $ret.="\tdel $target\n"; - $ret.="\t\$(MKLIB) @<<\n$target\ny\n$lib_names\n\n<<\n"; - } - else - { - local($ex)=($target =~ /O_SSL/)?'$(L_CRYPTO)':""; - $ex.=' winsock'; - $ret.="\t\$(LINK) \$(MLFLAGS) @<<\n"; - $ret.=$dll_names; - $ret.="\n $target\n\n $ex $libs\nms$o${name}.def;\n<<\n"; - ($out_lib=$target) =~ s/O_/L_/; - $ret.="\timplib /noignorecase /nowep $out_lib $target\n"; - } - $ret.="\n"; - return($ret); - } - -sub do_link_rule - { - local($target,$files,$dep_libs,$libs,$sha1file,$openssl)=@_; - local($ret,$f,$_,@f); - - $file =~ s/\//$o/g if $o ne '/'; - $n=&bname($targer); - $ret.="$target: $files $dep_libs\n"; - $ret.=" \$(LINK) \$(LFLAGS) @<<\n"; - - # Due to a pathetic line length limit, I have to unwrap the args. - if ($files =~ /\(([^)]*)\)$/) - { - @a=('$(APP_EX_OBJ)'); - push(@a,sort split(/\s+/,$Vars{$1})); - for $_ (@a) - { $ret.=" $_ +\n"; } - } - else - { $ret.=" \$(APP_EX_OBJ) $files"; } - $ret.="\n $target\n\n $libs\n\n<<\n"; - if (defined $sha1file) - { - $ret.=" $openssl sha1 -hmac etaonrishdlcupfm -binary $target > $sha1file"; - } - $ret.="\n"; - return($ret); - } - -1; diff --git a/src/lib/libcrypto/util/pl/VC-32-GMAKE.pl b/src/lib/libcrypto/util/pl/VC-32-GMAKE.pl deleted file mode 100644 index b5bbcac6c2..0000000000 --- a/src/lib/libcrypto/util/pl/VC-32-GMAKE.pl +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/local/bin/perl -# VCw32lib.pl - the file for Visual C++ 4.[01] for windows NT, static libraries -# - - -if ($fips && !$shlib) - { - $crypto="libeayfips32"; - $crypto_compat = "libeaycompat32.lib"; - } -else - { - $crypto="libeay32"; - } -$ssl= "ssleay32"; - -$o='/'; -#$cp='copy nul+'; # Timestamps get stuffed otherwise -#$rm='del'; - -$cp='cp'; -$rm='rm'; - -$zlib_lib="zlib1.lib"; - -# C compiler stuff -$cc='cl'; -$cflags=' -MD -W3 -WX -Ox -O2 -Ob2 -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32'; -$cflags.=' -D_CRT_SECURE_NO_DEPRECATE'; # shut up VC8 -$cflags.=' -D_CRT_NONSTDC_NO_DEPRECATE'; # shut up VC8 -$lflags="-nologo -subsystem:console -machine:I386 -opt:ref"; -$mlflags=''; - -$out_def="gmout32"; -$tmp_def="gmtmp32"; -$inc_def="gminc32"; - -if ($debug) - { - $cflags=" -MDd -W3 -WX -Zi -Yd -Od -nologo -DOPENSSL_SYSNAME_WIN32 -D_DEBUG -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DDEBUG -DDSO_WIN32"; - $lflags.=" -debug"; - $mlflags.=' -debug'; - } -$cflags .= " -DOPENSSL_SYSNAME_WINNT" if $NT == 1; - -$obj='.obj'; -$ofile="-Fo"; - -# EXE linking stuff -$link="link"; -$efile="-out:"; -$exep='.exe'; -if ($no_sock) - { $ex_libs=""; } -else { $ex_libs="wsock32.lib user32.lib gdi32.lib"; } - -# static library stuff -$mklib='lib'; -$ranlib=''; -$plib=""; -$libp=".lib"; -$shlibp=($shlib)?".dll":".lib"; -$lfile='-out:'; - -$shlib_ex_obj=""; -$app_ex_obj="setargv.obj"; -if ($nasm) { - $asm='nasmw -f win32'; - $afile='-o '; -} else { - $asm='ml -Cp -coff -c -Cx'; - $asm.=" -Zi" if $debug; - $afile='-Fo'; -} - -$bn_asm_obj=''; -$bn_asm_src=''; -$des_enc_obj=''; -$des_enc_src=''; -$bf_enc_obj=''; -$bf_enc_src=''; - -if (!$no_asm && !$fips) - { - $bn_asm_obj='crypto/bn/asm/bn_win32.obj'; - $bn_asm_src='crypto/bn/asm/bn_win32.asm'; - $des_enc_obj='crypto/des/asm/d_win32.obj crypto/des/asm/y_win32.obj'; - $des_enc_src='crypto/des/asm/d_win32.asm crypto/des/asm/y_win32.asm'; - $bf_enc_obj='crypto/bf/asm/b_win32.obj'; - $bf_enc_src='crypto/bf/asm/b_win32.asm'; - $cast_enc_obj='crypto/cast/asm/c_win32.obj'; - $cast_enc_src='crypto/cast/asm/c_win32.asm'; - $rc4_enc_obj='crypto/rc4/asm/r4_win32.obj'; - $rc4_enc_src='crypto/rc4/asm/r4_win32.asm'; - $rc5_enc_obj='crypto/rc5/asm/r5_win32.obj'; - $rc5_enc_src='crypto/rc5/asm/r5_win32.asm'; - $md5_asm_obj='crypto/md5/asm/m5_win32.obj'; - $md5_asm_src='crypto/md5/asm/m5_win32.asm'; - $sha1_asm_obj='crypto/sha/asm/s1_win32.obj'; - $sha1_asm_src='crypto/sha/asm/s1_win32.asm'; - $rmd160_asm_obj='crypto/ripemd/asm/rm_win32.obj'; - $rmd160_asm_src='crypto/ripemd/asm/rm_win32.asm'; - $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DRMD160_ASM"; - } - -if ($shlib) - { - $mlflags.=" $lflags -dll"; -# $cflags =~ s| -MD| -MT|; - $lib_cflag=" -D_WINDLL"; - $out_def="gmout32dll"; - $tmp_def="gmtmp32dll"; - } - -$cflags.=" -Fd$out_def"; - -sub do_lib_rule - { - local($objs,$target,$name,$shlib,$ign,$base_addr, $fips_get_sig, $fips_premain_src)=@_; - local($ret,$Name); - - $taget =~ s/\//$o/g if $o ne '/'; - ($Name=$name) =~ tr/a-z/A-Z/; - my $base_arg; - if ($base_addr ne "") - { - $base_arg= " -base:$base_addr"; - } - else - { - $base_arg = ""; - } - - -# $target="\$(LIB_D)$o$target"; - if (!$shlib) - { -# $ret.="\t\$(RM) \$(O_$Name)\n"; - $ret.="$target: $objs\n"; - $ex =' advapi32.lib'; - $ret.="\t\$(MKLIB) $lfile$target $objs $ex\n\n"; - } - else - { - local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; - $ex.=' wsock32.lib gdi32.lib advapi32.lib user32.lib'; - $ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/; - if (defined $fips_get_sig) - { - $ret.="$target: \$(O_FIPSCANISTER) $objs $fips_get_sig\n"; - $ret.="\tFIPS_LINK=\$(LINK) "; - $ret.="FIPS_CC=\$(CC) "; - $ret.="FIPS_CC_ARGS=\"-Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\" "; - $ret.="FIPS_PREMAIN_DSO=$fips_get_sig "; - $ret.="FIPS_TARGET=$target "; - $ret.="FIPS_LIBDIR=\$(FIPSLIB_D) "; - $ret.="\$(FIPSLINK) \$(MLFLAGS) $base_arg $efile$target "; - $ret.="-def:ms/${Name}.def \$(SHLIB_EX_OBJ) $objs "; - $ret.="\$(OBJ_D)${o}fips_premain.obj $ex\n\n"; - } - else - { - $ret.="$target: $objs\n"; - $ret.="\t\$(LINK) \$(MLFLAGS) $base_arg $efile$target /def:ms/${Name}.def \$(SHLIB_EX_OBJ) $objs $ex\n\n"; - } - } - $ret.="\n"; - return($ret); - } - -sub do_link_rule - { - local($target,$files,$dep_libs,$libs,$standalone)=@_; - local($ret,$_); - $file =~ s/\//$o/g if $o ne '/'; - $n=&bname($targer); - if ($standalone) - { - $ret.="$target: $files $dep_libs\n"; - $ret.="\t\$(LINK) \$(LFLAGS) $efile$target "; - $ret.="$files $libs\n\n"; - } - elsif ($fips && !$shlib) - { - $ret.="$target: \$(O_FIPSCANISTER) $files $dep_libs\n"; - $ret.="\tFIPS_LINK=\$(LINK) "; - $ret.="FIPS_CC=\$(CC) "; - $ret.="FIPS_CC_ARGS=\"-Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\" "; - $ret.="FIPS_PREMAIN_DSO= "; - $ret.="FIPS_TARGET=$target "; - $ret.="FIPS_LIBDIR=\$(FIPSLIB_D) "; - $ret.=" \$(FIPSLINK) \$(LFLAGS) $efile$target "; - $ret.="\$(APP_EX_OBJ) $files \$(OBJ_D)${o}fips_premain.obj $libs\n\n"; - } - else - { - $ret.="$target: $files $dep_libs\n"; - $ret.="\t\$(LINK) \$(LFLAGS) $efile$target "; - $ret.="\$(APP_EX_OBJ) $files $libs\n\n"; - } - $ret.="\n"; - return($ret); - } - -sub do_rlink_rule - { - local($target,$files,$check_hash, $deps)=@_; - local($ret,$_); - - $file =~ s/\//$o/g if $o ne '/'; - $n=&bname($targer); - $ret.="$target: $check_hash $files $deps\n"; - $ret.="\t\$(PERL) util${o}checkhash.pl -chdir fips-1.0 -program_path ..$o$check_hash\n"; - $ret.="\t\$(MKCANISTER) $target $files\n"; - $ret.="\t$check_hash $target > $target.sha1\n"; - $ret.="\t\$(CP) fips-1.0${o}fips_premain.c \$(FIPSLIB_D)\n"; - $ret.="\t$check_hash \$(FIPSLIB_D)${o}fips_premain.c > \$(FIPSLIB_D)${o}fips_premain.c.sha1\n\n"; - return($ret); - } - - -1; diff --git a/src/lib/libcrypto/util/pl/VC-CE.pl b/src/lib/libcrypto/util/pl/VC-CE.pl deleted file mode 100644 index 2fd0c4dd32..0000000000 --- a/src/lib/libcrypto/util/pl/VC-CE.pl +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/local/bin/perl -# VC-CE.pl - the file for eMbedded Visual C++ 3.0 for windows CE, static libraries -# - -$ssl= "ssleay32"; -$crypto="libeay32"; -$RSAref="RSAref32"; - -$o='\\'; -$cp='copy nul+'; # Timestamps get stuffed otherwise -$rm='del'; - -# C compiler stuff -$cc='$(CC)'; -$cflags=' /W3 /WX /Ox /O2 /Ob2 /Gs0 /GF /Gy /nologo $(WCETARGETDEFS) -DUNICODE -D_UNICODE -DWIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD -I$(WCECOMPAT)/include'; -$lflags='/nologo /subsystem:windowsce,$(WCELDVERSION) /machine:$(WCELDMACHINE) /opt:ref'; -$mlflags=''; - -$out_def='out32_$(TARGETCPU)'; -$tmp_def='tmp32_$(TARGETCPU)'; -$inc_def="inc32"; - -if ($debug) - { - $cflags=" /MDd /W3 /WX /Zi /Yd /Od /nologo -DWIN32 -D_DEBUG -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DDEBUG -DDSO_WIN32"; - $lflags.=" /debug"; - $mlflags.=' /debug'; - } - -$obj='.obj'; -$ofile="/Fo"; - -# EXE linking stuff -$link="link"; -$efile="/out:"; -$exep='.exe'; -if ($no_sock) - { $ex_libs=""; } -else { $ex_libs='winsock.lib $(WCECOMPAT)/lib/wcecompatex.lib $(WCELDFLAGS)'; } - -# static library stuff -$mklib='lib'; -$ranlib=''; -$plib=""; -$libp=".lib"; -$shlibp=($shlib)?".dll":".lib"; -$lfile='/out:'; - -$shlib_ex_obj=""; -$app_ex_obj=""; -$app_ex_obj=""; - -$bn_asm_obj=''; -$bn_asm_src=''; -$des_enc_obj=''; -$des_enc_src=''; -$bf_enc_obj=''; -$bf_enc_src=''; - -if ($shlib) - { - $mlflags.=" $lflags /dll"; -# $cflags =~ s| /MD| /MT|; - $lib_cflag=" -D_WINDLL -D_DLL"; - $out_def='out32dll_$(TARGETCPU)'; - $tmp_def='tmp32dll_$(TARGETCPU)'; - } - -$cflags.=" /Fd$out_def"; - -sub do_lib_rule - { - local($objs,$target,$name,$shlib)=@_; - local($ret,$Name); - - $taget =~ s/\//$o/g if $o ne '/'; - ($Name=$name) =~ tr/a-z/A-Z/; - -# $target="\$(LIB_D)$o$target"; - $ret.="$target: $objs\n"; - if (!$shlib) - { -# $ret.="\t\$(RM) \$(O_$Name)\n"; - $ex =' '; - $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n"; - } - else - { - local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; -# $ex.=' winsock.lib coredll.lib $(WCECOMPAT)/lib/wcecompatex.lib'; - $ex.=' winsock.lib $(WCECOMPAT)/lib/wcecompatex.lib'; - $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n"; - } - $ret.="\n"; - return($ret); - } - -sub do_link_rule - { - local($target,$files,$dep_libs,$libs,$sha1file,$openssl)=@_; - local($ret,$_); - - $file =~ s/\//$o/g if $o ne '/'; - $n=&bname($targer); - $ret.="$target: $files $dep_libs\n"; - $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n"; - $ret.=" \$(APP_EX_OBJ) $files $libs\n<<\n"; - if (defined $sha1file) - { - $ret.=" $openssl sha1 -hmac etaonrishdlcupfm -binary $target > $sha1file"; - } - $ret.="\n"; - return($ret); - } - -1; diff --git a/src/lib/libcrypto/util/pl/netware.pl b/src/lib/libcrypto/util/pl/netware.pl new file mode 100644 index 0000000000..c78bcfc874 --- /dev/null +++ b/src/lib/libcrypto/util/pl/netware.pl @@ -0,0 +1,532 @@ +# Metrowerks Codewarrior or gcc / nlmconv for NetWare +# + +$version_header = "crypto/opensslv.h"; +open(IN, "$version_header") or die "Couldn't open $version_header: $!"; +while () { + if (/^#define[\s\t]+OPENSSL_VERSION_NUMBER[\s\t]+0x(\d)(\d{2})(\d{2})(\d{2})/) + { + # die "OpenSSL version detected: $1.$2.$3.$4\n"; + #$nlmvernum = "$1,$2,$3"; + $nlmvernum = "$1,".($2*10+$3).",".($4*1); + #$nlmverstr = "$1.".($2*1).".".($3*1).($4?(chr(96+$4)):""); + break; + } +} +close(IN) or die "Couldn't close $version_header: $!"; + +$readme_file = "README"; +open(IN, $readme_file) or die "Couldn't open $readme_file: $!"; +while () { + if (/^[\s\t]+OpenSSL[\s\t]+(\d)\.(\d{1,2})\.(\d{1,2})([a-z])(.*)/) + { + #$nlmvernum = "$1,$2,$3"; + #$nlmvernum = "$1,".($2*10+$3).",".($4*1); + $nlmverstr = "$1.$2.$3$4$5"; + } + elsif (/^[\s\t]+(Copyright \(c\) \d{4}\-\d{4} The OpenSSL Project)$/) + { + $nlmcpystr = $1; + } + break if ($nlmvernum && $nlmcpystr); +} +close(IN) or die "Couldn't close $readme_file: $!"; + +# Define stacksize here +$nlmstack = "32768"; + +# some default settings here in case we failed to find them in README +$nlmvernum = "1,0,0" if (!$nlmvernum); +$nlmverstr = "OpenSSL" if (!$nlmverstr); +$nlmcpystr = "Copyright (c) 1998-now The OpenSSL Project" if (!$nlmcpystr); + +# die "OpenSSL copyright: $nlmcpystr\nOpenSSL verstring: $nlmverstr\nOpenSSL vernumber: $nlmvernum\n"; + +# The import files and other misc imports needed to link +@misc_imports = ("GetProcessSwitchCount", "RunningProcess", + "GetSuperHighResolutionTimer"); +if ($LIBC) +{ + @import_files = ("libc.imp"); + @module_files = ("libc"); + $libarch = "LIBC"; +} +else +{ + # clib build + @import_files = ("clib.imp"); + push(@import_files, "socklib.imp") if ($BSDSOCK); + @module_files = ("clib"); + # push(@misc_imports, "_rt_modu64%16", "_rt_divu64%16"); + $libarch = "CLIB"; +} +if ($BSDSOCK) +{ + $libarch .= "-BSD"; +} +else +{ + $libarch .= "-WS2"; + push(@import_files, "ws2nlm.imp"); +} + +# The "IMPORTS" environment variable must be set and point to the location +# where import files (*.imp) can be found. +# Example: set IMPORTS=c:\ndk\nwsdk\imports +$import_path = $ENV{"IMPORTS"} || die ("IMPORTS environment variable not set\n"); + + +# The "PRELUDE" environment variable must be set and point to the location +# and name of the prelude source to link with ( nwpre.obj is recommended ). +# Example: set PRELUDE=c:\codewar\novell support\metrowerks support\libraries\runtime\nwpre.obj +$prelude = $ENV{"PRELUDE"} || die ("PRELUDE environment variable not set\n"); + +# The "INCLUDES" environment variable must be set and point to the location +# where import files (*.imp) can be found. +$include_path = $ENV{"INCLUDE"} || die ("INCLUDES environment variable not set\n"); +$include_path =~ s/\\/\//g; +$include_path = join(" -I", split(/;/, $include_path)); + +# check for gcc compiler +$gnuc = $ENV{"GNUC"}; + +#$ssl= "ssleay32"; +#$crypto="libeay32"; + +if ($gnuc) +{ + # C compiler + $cc='gcc'; + # Linker + $link='nlmconv'; + # librarian + $mklib='ar'; + $o='/'; + # cp command + $cp='cp -af'; + # rm command + $rm='rm -f'; + # mv command + $mv='mv -f'; + # mkdir command + $mkdir='gmkdir'; + #$ranlib='ranlib'; +} +else +{ + # C compiler + $cc='mwccnlm'; + # Linker + $link='mwldnlm'; + # librarian + $mklib='mwldnlm'; + # Path separator + $o='\\'; + # cp command + $cp='copy >nul:'; + # rm command + $rm='del /f /q'; +} + +# assembler +if ($nw_nasm) +{ + $asm=(`nasm -v 2>NUL` gt `nasmw -v 2>NUL`?"nasm":"nasmw"); + if ($gnuc) + { + $asm.=" -s -f elf"; + } + else + { + $asm.=" -s -f coff -d __coff__"; + } + $afile="-o "; + $asm.=" -g" if $debug; +} +elsif ($nw_mwasm) +{ + $asm="mwasmnlm -maxerrors 20"; + $afile="-o "; + $asm.=" -g" if $debug; +} +elsif ($nw_masm) +{ +# masm assembly settings - it should be possible to use masm but haven't +# got it working. +# $asm='ml /Cp /coff /c /Cx'; +# $asm.=" /Zi" if $debug; +# $afile='/Fo'; + die("Support for masm assembler not yet functional\n"); +} +else +{ + $asm=""; + $afile=""; +} + + + +if ($gnuc) +{ + # compile flags for GNUC + # additional flags based upon debug | non-debug + if ($debug) + { + $cflags="-g -DDEBUG"; + } + else + { + $cflags="-O2"; + } + $cflags.=" -nostdinc -I$include_path \\ + -fno-builtin -fpcc-struct-return -fno-strict-aliasing \\ + -funsigned-char -Wall -Wno-unused -Wno-uninitialized"; + + # link flags + $lflags="-T"; +} +else +{ + # compile flags for CodeWarrior + # additional flags based upon debug | non-debug + if ($debug) + { + $cflags="-opt off -g -sym internal -DDEBUG"; + } + else + { + # CodeWarrior compiler has a problem with optimizations for floating + # points - no optimizations until further investigation + # $cflags="-opt all"; + } + + # NOTES: Several c files in the crypto subdirectory include headers from + # their local directories. Metrowerks wouldn't find these h files + # without adding individual include directives as compile flags + # or modifying the c files. Instead of adding individual include + # paths for each subdirectory a recursive include directive + # is used ( -ir crypto ). + # + # A similar issue exists for the engines and apps subdirectories. + # + # Turned off the "possible" warnings ( -w nopossible ). Metrowerks + # complained a lot about various stuff. May want to turn back + # on for further development. + $cflags.=" -nostdinc -ir crypto -ir engines -ir apps -I$include_path \\ + -msgstyle gcc -align 4 -processor pentium -char unsigned \\ + -w on -w nolargeargs -w nopossible -w nounusedarg -w nounusedexpr \\ + -w noimplicitconv -relax_pointers -nosyspath -maxerrors 20"; + + # link flags + $lflags="-msgstyle gcc -zerobss -nostdlib -sym internal -commandfile"; +} + +# common defines +$cflags.=" -DL_ENDIAN -DOPENSSL_SYSNAME_NETWARE -U_WIN32"; + +# If LibC build add in NKS_LIBC define and set the entry/exit +# routines - The default entry/exit routines are for CLib and don't exist +# in LibC +if ($LIBC) +{ + $cflags.=" -DNETWARE_LIBC"; + $nlmstart = "_LibCPrelude"; + $nlmexit = "_LibCPostlude"; + @nlm_flags = ("pseudopreemption", "flag_on 64"); +} +else +{ + $cflags.=" -DNETWARE_CLIB"; + $nlmstart = "_Prelude"; + $nlmexit = "_Stop"; +} + +# If BSD Socket support is requested, set a define for the compiler +if ($BSDSOCK) +{ + $cflags.=" -DNETWARE_BSDSOCK"; + if (!$LIBC) + { + $cflags.=" -DNETDB_USE_INTERNET"; + } +} + + +# linking stuff +# for the output directories use the mk1mf.pl values with "_nw" appended +if ($shlib) +{ + if ($LIBC) + { + $out_def.="_nw_libc_nlm"; + $tmp_def.="_nw_libc_nlm"; + $inc_def.="_nw_libc_nlm"; + } + else # NETWARE_CLIB + { + $out_def.="_nw_clib_nlm"; + $tmp_def.="_nw_clib_nlm"; + $inc_def.="_nw_clib_nlm"; + } +} +else +{ + if ($gnuc) # GNUC Tools + { + $libp=".a"; + $shlibp=".a"; + $lib_flags="-cr"; + } + else # CodeWarrior + { + $libp=".lib"; + $shlibp=".lib"; + $lib_flags="-nodefaults -type library -o"; + } + if ($LIBC) + { + $out_def.="_nw_libc"; + $tmp_def.="_nw_libc"; + $inc_def.="_nw_libc"; + } + else # NETWARE_CLIB + { + $out_def.="_nw_clib"; + $tmp_def.="_nw_clib"; + $inc_def.="_nw_clib"; + } +} + +# used by mk1mf.pl +$obj='.o'; +$ofile='-o '; +$efile=''; +$exep='.nlm'; +$ex_libs=''; + +if (!$no_asm) +{ + $bn_asm_obj="\$(OBJ_D)${o}bn-nw${obj}"; + $bn_asm_src="crypto${o}bn${o}asm${o}bn-nw.asm"; + $bnco_asm_obj="\$(OBJ_D)${o}co-nw${obj}"; + $bnco_asm_src="crypto${o}bn${o}asm${o}co-nw.asm"; + $aes_asm_obj="\$(OBJ_D)${o}a-nw${obj}"; + $aes_asm_src="crypto${o}aes${o}asm${o}a-nw.asm"; + $des_enc_obj="\$(OBJ_D)${o}d-nw${obj} \$(OBJ_D)${o}y-nw${obj}"; + $des_enc_src="crypto${o}des${o}asm${o}d-nw.asm crypto${o}des${o}asm${o}y-nw.asm"; + $bf_enc_obj="\$(OBJ_D)${o}b-nw${obj}"; + $bf_enc_src="crypto${o}bf${o}asm${o}b-nw.asm"; + $cast_enc_obj="\$(OBJ_D)${o}c-nw${obj}"; + $cast_enc_src="crypto${o}cast${o}asm${o}c-nw.asm"; + $rc4_enc_obj="\$(OBJ_D)${o}r4-nw${obj}"; + $rc4_enc_src="crypto${o}rc4${o}asm${o}r4-nw.asm"; + $rc5_enc_obj="\$(OBJ_D)${o}r5-nw${obj}"; + $rc5_enc_src="crypto${o}rc5${o}asm${o}r5-nw.asm"; + $md5_asm_obj="\$(OBJ_D)${o}m5-nw${obj}"; + $md5_asm_src="crypto${o}md5${o}asm${o}m5-nw.asm"; + $sha1_asm_obj="\$(OBJ_D)${o}s1-nw${obj} \$(OBJ_D)${o}sha256-nw${obj} \$(OBJ_D)${o}sha512-nw${obj}"; + $sha1_asm_src="crypto${o}sha${o}asm${o}s1-nw.asm crypto${o}sha${o}asm${o}sha256-nw.asm crypto${o}sha${o}asm${o}sha512-nw.asm"; + $rmd160_asm_obj="\$(OBJ_D)${o}rm-nw${obj}"; + $rmd160_asm_src="crypto${o}ripemd${o}asm${o}rm-nw.asm"; + $whirlpool_asm_obj="\$(OBJ_D)${o}wp-nw${obj}"; + $whirlpool_asm_src="crypto${o}whrlpool${o}asm${o}wp-nw.asm"; + $cpuid_asm_obj="\$(OBJ_D)${o}x86cpuid-nw${obj}"; + $cpuid_asm_src="crypto${o}x86cpuid-nw.asm"; + $cflags.=" -DOPENSSL_CPUID_OBJ -DBN_ASM -DOPENSSL_BN_ASM_PART_WORDS -DMD5_ASM -DWHIRLPOOL_ASM"; + $cflags.=" -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM"; + $cflags.=" -DAES_ASM -DRMD160_ASM"; +} +else +{ + $bn_asm_obj=''; + $bn_asm_src=''; + $bnco_asm_obj=''; + $bnco_asm_src=''; + $aes_asm_obj=''; + $aes_asm_src=''; + $des_enc_obj=''; + $des_enc_src=''; + $bf_enc_obj=''; + $bf_enc_src=''; + $cast_enc_obj=''; + $cast_enc_src=''; + $rc4_enc_obj=''; + $rc4_enc_src=''; + $rc5_enc_obj=''; + $rc5_enc_src=''; + $md5_asm_obj=''; + $md5_asm_src=''; + $sha1_asm_obj=''; + $sha1_asm_src=''; + $rmd160_asm_obj=''; + $rmd160_asm_src=''; + $whirlpool_asm_obj=''; + $whirlpool_asm_src=''; + $cpuid_asm_obj=''; + $cpuid_asm_src=''; +} + +# create the *.def linker command files in \openssl\netware\ directory +sub do_def_file +{ + # strip off the leading path + my($target) = bname(shift); + my($i); + + if ($target =~ /(.*).nlm/) + { + $target = $1; + } + + # special case for openssl - the mk1mf.pl defines E_EXE = openssl + if ($target =~ /E_EXE/) + { + $target =~ s/\$\(E_EXE\)/openssl/; + } + + # Note: originally tried to use full path ( \openssl\netware\$target.def ) + # Metrowerks linker choked on this with an assertion failure. bug??? + # + my($def_file) = "netware${o}$target.def"; + + open(DEF_OUT, ">$def_file") || die("unable to open file $def_file\n"); + + print( DEF_OUT "# command file generated by netware.pl for NLM target.\n" ); + print( DEF_OUT "# do not edit this file - all your changes will be lost!!\n" ); + print( DEF_OUT "#\n"); + print( DEF_OUT "DESCRIPTION \"$target ($libarch) - OpenSSL $nlmverstr\"\n"); + print( DEF_OUT "COPYRIGHT \"$nlmcpystr\"\n"); + print( DEF_OUT "VERSION $nlmvernum\n"); + print( DEF_OUT "STACK $nlmstack\n"); + print( DEF_OUT "START $nlmstart\n"); + print( DEF_OUT "EXIT $nlmexit\n"); + + # special case for openssl + if ($target eq "openssl") + { + print( DEF_OUT "SCREENNAME \"OpenSSL $nlmverstr\"\n"); + } + else + { + print( DEF_OUT "SCREENNAME \"DEFAULT\"\n"); + } + + foreach $i (@misc_imports) + { + print( DEF_OUT "IMPORT $i\n"); + } + + foreach $i (@import_files) + { + print( DEF_OUT "IMPORT \@$import_path${o}$i\n"); + } + + foreach $i (@module_files) + { + print( DEF_OUT "MODULE $i\n"); + } + + foreach $i (@nlm_flags) + { + print( DEF_OUT "$i\n"); + } + + if ($gnuc) + { + if ($target =~ /openssl/) + { + print( DEF_OUT "INPUT ${tmp_def}${o}openssl${obj}\n"); + print( DEF_OUT "INPUT ${tmp_def}${o}openssl${libp}\n"); + } + else + { + print( DEF_OUT "INPUT ${tmp_def}${o}${target}${obj}\n"); + } + print( DEF_OUT "INPUT $prelude\n"); + print( DEF_OUT "INPUT ${out_def}${o}${ssl}${libp} ${out_def}${o}${crypto}${libp}\n"); + print( DEF_OUT "OUTPUT $target.nlm\n"); + } + + close(DEF_OUT); + return($def_file); +} + +sub do_lib_rule +{ + my($objs,$target,$name,$shlib)=@_; + my($ret); + + $ret.="$target: $objs\n"; + if (!$shlib) + { + $ret.="\t\@echo Building Lib: $name\n"; + $ret.="\t\$(MKLIB) $lib_flags $target $objs\n"; + $ret.="\t\@echo .\n" + } + else + { + die( "Building as NLM not currently supported!" ); + } + + $ret.="\n"; + return($ret); +} + +sub do_link_rule +{ + my($target,$files,$dep_libs,$libs)=@_; + my($ret); + my($def_file) = do_def_file($target); + + $ret.="$target: $files $dep_libs\n"; + + # NOTE: When building the test nlms no screen name is given + # which causes the console screen to be used. By using the console + # screen there is no "" message which + # requires user interaction. The test script ( do_tests.pl ) needs + # to be able to run the tests without requiring user interaction. + # + # However, the sample program "openssl.nlm" is used by the tests and is + # a interactive sample so a screen is desired when not be run by the + # tests. To solve the problem, two versions of the program are built: + # openssl2 - no screen used by tests + # openssl - default screen - use for normal interactive modes + # + + # special case for openssl - the mk1mf.pl defines E_EXE = openssl + if ($target =~ /E_EXE/) + { + my($target2) = $target; + + $target2 =~ s/\(E_EXE\)/\(E_EXE\)2/; + + # openssl2 + my($def_file2) = do_def_file($target2); + + if ($gnuc) + { + $ret.="\t\$(MKLIB) $lib_flags \$(TMP_D)${o}\$(E_EXE).a \$(filter-out \$(TMP_D)${o}\$(E_EXE)${obj},$files)\n"; + $ret.="\t\$(LINK) \$(LFLAGS) $def_file2\n"; + $ret.="\t\@$mv \$(E_EXE)2.nlm \$(TEST_D)\n"; + } + else + { + $ret.="\t\$(LINK) \$(LFLAGS) $def_file2 $files \"$prelude\" $libs -o $target2\n"; + } + } + if ($gnuc) + { + $ret.="\t\$(LINK) \$(LFLAGS) $def_file\n"; + $ret.="\t\@$mv \$(\@F) \$(TEST_D)\n"; + } + else + { + $ret.="\t\$(LINK) \$(LFLAGS) $def_file $files \"$prelude\" $libs -o $target\n"; + } + + $ret.="\n"; + return($ret); + +} + +1; -- cgit v1.2.3-55-g6feb