Update from stable branch.

This commit is contained in:
Dr. Stephen Henson 2005-11-06 17:58:26 +00:00
parent 9135fddb0e
commit fbf002bb88
8 changed files with 130 additions and 15 deletions

View File

@ -53,6 +53,10 @@
Changes between 0.9.8a and 0.9.8b [XX xxx XXXX] Changes between 0.9.8a and 0.9.8b [XX xxx XXXX]
*) Add support for building of engines under engine/ as shared libraries
under VC++ build system.
[Steve Henson]
*) Corrected the numerous bugs in the Win32 path splitter in DSO. *) Corrected the numerous bugs in the Win32 path splitter in DSO.
Hopefully, we will not see any false combination of paths any more. Hopefully, we will not see any false combination of paths any more.
[Richard Levitte] [Richard Levitte]

View File

@ -866,6 +866,8 @@ foreach (sort (keys %disabled))
{ $no_shared = 1; } { $no_shared = 1; }
elsif (/^zlib$/) elsif (/^zlib$/)
{ $zlib = 0; } { $zlib = 0; }
elsif (/^static-engine$/)
{ }
elsif (/^zlib-dynamic$/) elsif (/^zlib-dynamic$/)
{ } { }
elsif (/^symlinks$/) elsif (/^symlinks$/)
@ -1124,13 +1126,16 @@ if (!$no_shared)
} }
} }
if ($no_shared) if (!$IsMK1MF)
{ {
$openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n"; if ($no_shared)
} {
else $openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n";
{ }
$openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n"; else
{
$openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n";
}
} }
$cpuid_obj.=" uplink.o uplink-cof.o" if ($cflags =~ /\-DOPENSSL_USE_APPLINK/); $cpuid_obj.=" uplink.o uplink-cof.o" if ($cflags =~ /\-DOPENSSL_USE_APPLINK/);

View File

@ -637,7 +637,7 @@ typedef struct st_dynamic_fns {
* can be fully instantiated with IMPLEMENT_DYNAMIC_CHECK_FN(). */ * can be fully instantiated with IMPLEMENT_DYNAMIC_CHECK_FN(). */
typedef unsigned long (*dynamic_v_check_fn)(unsigned long ossl_version); typedef unsigned long (*dynamic_v_check_fn)(unsigned long ossl_version);
#define IMPLEMENT_DYNAMIC_CHECK_FN() \ #define IMPLEMENT_DYNAMIC_CHECK_FN() \
unsigned long v_check(unsigned long v) { \ OPENSSL_EXPORT unsigned long v_check(unsigned long v) { \
if(v >= OSSL_DYNAMIC_OLDEST) return OSSL_DYNAMIC_VERSION; \ if(v >= OSSL_DYNAMIC_OLDEST) return OSSL_DYNAMIC_VERSION; \
return 0; } return 0; }
@ -659,6 +659,7 @@ typedef unsigned long (*dynamic_v_check_fn)(unsigned long ossl_version);
typedef int (*dynamic_bind_engine)(ENGINE *e, const char *id, typedef int (*dynamic_bind_engine)(ENGINE *e, const char *id,
const dynamic_fns *fns); const dynamic_fns *fns);
#define IMPLEMENT_DYNAMIC_BIND_FN(fn) \ #define IMPLEMENT_DYNAMIC_BIND_FN(fn) \
OPENSSL_EXPORT \
int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \ int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \
if(ENGINE_get_static_state() == fns->static_state) goto skip_cbs; \ if(ENGINE_get_static_state() == fns->static_state) goto skip_cbs; \
if(!CRYPTO_set_mem_functions(fns->mem_fns.malloc_cb, \ if(!CRYPTO_set_mem_functions(fns->mem_fns.malloc_cb, \

58
util/copy.pl Normal file
View File

@ -0,0 +1,58 @@
#!/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 $arg;
foreach $arg (@ARGV) {
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)
{
syswrite(OUT, $buf, length($buf));
}
close(IN);
close(OUT);
print "Copying: $_ to $dfile\n";
}

View File

@ -10,6 +10,10 @@ $OPTIONS="";
$ssl_version=""; $ssl_version="";
$banner="\t\@echo Building OpenSSL"; $banner="\t\@echo Building OpenSSL";
my $no_static_engine = 0;
my $engines = "";
open(IN,"<Makefile") || die "unable to open Makefile!\n"; open(IN,"<Makefile") || die "unable to open Makefile!\n";
while(<IN>) { while(<IN>) {
$ssl_version=$1 if (/^VERSION=(.*)$/); $ssl_version=$1 if (/^VERSION=(.*)$/);
@ -95,6 +99,8 @@ foreach (grep(!/^$/, split(/ /, $OPTIONS)))
print STDERR "unknown option - $_\n" if !&read_options; print STDERR "unknown option - $_\n" if !&read_options;
} }
$no_static_engine = 0 if (!$shlib);
$no_mdc2=1 if ($no_des); $no_mdc2=1 if ($no_des);
$no_ssl3=1 if ($no_md5 || $no_sha); $no_ssl3=1 if ($no_md5 || $no_sha);
@ -214,6 +220,16 @@ $cflags.=" -DOPENSSL_NO_ECDSA" if $no_ecdsa;
$cflags.=" -DOPENSSL_NO_ECDH" if $no_ecdh; $cflags.=" -DOPENSSL_NO_ECDH" if $no_ecdh;
$cflags.=" -DOPENSSL_NO_ENGINE" if $no_engine; $cflags.=" -DOPENSSL_NO_ENGINE" if $no_engine;
$cflags.=" -DOPENSSL_NO_HW" if $no_hw; $cflags.=" -DOPENSSL_NO_HW" if $no_hw;
if ($no_static_engine)
{
$cflags .= " -DOPENSSL_NO_STATIC_ENGINE";
}
else
{
$cflags .= " -DOPENSSL_NO_DYNAMIC_ENGINE";
}
#$cflags.=" -DRSAref" if $rsaref ne ""; #$cflags.=" -DRSAref" if $rsaref ne "";
## if ($unix) ## if ($unix)
@ -288,8 +304,10 @@ for (;;)
if ($key eq "HEADER") if ($key eq "HEADER")
{ $header.=&var_add($dir,$val, 1); } { $header.=&var_add($dir,$val, 1); }
if ($key eq "LIBOBJ") if ($key eq "LIBOBJ" && ($dir ne "engines" || !$no_static_engine))
{ $libobj=&var_add($dir,$val, 0); } { $libobj=&var_add($dir,$val, 0); }
if ($key eq "LIBNAMES" && $dir eq "engines" && $no_static_engine)
{ $engines.=$val }
if (!($_=<IN>)) if (!($_=<IN>))
{ $_="RELATIVE_DIRECTORY=FINISHED\n"; } { $_="RELATIVE_DIRECTORY=FINISHED\n"; }
@ -385,12 +403,14 @@ CRYPTO=$crypto
# BIN_D - Binary output directory # BIN_D - Binary output directory
# TEST_D - Binary test file output directory # TEST_D - Binary test file output directory
# LIB_D - library output directory # LIB_D - library output directory
# ENG_D - dynamic engine output directory
# Note: if you change these point to different directories then uncomment out # Note: if you change these point to different directories then uncomment out
# the lines around the 'NB' comment below. # the lines around the 'NB' comment below.
# #
BIN_D=\$(OUT_D) BIN_D=\$(OUT_D)
TEST_D=\$(OUT_D) TEST_D=\$(OUT_D)
LIB_D=\$(OUT_D) LIB_D=\$(OUT_D)
ENG_D=\$(OUT_D)
# INCL_D - local library directory # INCL_D - local library directory
# OBJ_D - temp object file directory # OBJ_D - temp object file directory
@ -446,7 +466,7 @@ $banner
headers: \$(HEADER) \$(EXHEADER) headers: \$(HEADER) \$(EXHEADER)
@ @
lib: \$(LIBS_DEP) lib: \$(LIBS_DEP) \$(E_SHLIB)
exe: \$(T_EXE) \$(BIN_D)$o\$(E_EXE)$exep exe: \$(T_EXE) \$(BIN_D)$o\$(E_EXE)$exep
@ -617,6 +637,16 @@ foreach (split(/\s+/,$test))
$rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)"); $rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");
} }
$defs.=&do_defs("E_SHLIB",$engines,"\$(ENG_D)",$shlibp);
foreach (split(/\s+/,$engines))
{
$rules.=&do_compile_rule("\$(OBJ_D)","engines${o}e_$_",$lib);
$rules.= &do_lib_rule("\$(OBJ_D)${o}e_${_}.obj","\$(ENG_D)$o$_$shlibp","",$shlib,"");
}
$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)"); $rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)");
$rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)"); $rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)");
@ -777,7 +807,7 @@ sub do_defs
elsif ($var eq "SSLOBJ") elsif ($var eq "SSLOBJ")
{ $ret.="\$(OBJ_D)\\\$(SSL).res "; } { $ret.="\$(OBJ_D)\\\$(SSL).res "; }
} }
chop($ret); chomp($ret);
$ret.="\n\n"; $ret.="\n\n";
return($ret); return($ret);
} }
@ -960,6 +990,14 @@ sub read_options
{ {
$xcflags = "-DZLIB_SHARED -DZLIB $xcflags"; $xcflags = "-DZLIB_SHARED -DZLIB $xcflags";
} }
elsif (/^no-static-engine/)
{
$no_static_engine = 1;
}
elsif (/^enable-static-engine/)
{
$no_static_engine = 0;
}
# There are also enable-xxx options which correspond to # There are also enable-xxx options which correspond to
# the no-xxx. Since the scalars are enabled by default # the no-xxx. Since the scalars are enabled by default
# these can be ignored. # these can be ignored.

View File

@ -145,6 +145,8 @@ foreach (@ARGV, split(/ /, $options))
$do_crypto=1; $do_crypto=1;
$libname=$_; $libname=$_;
} }
$no_static_engine=1 if $_ eq "no-static-engine";
$no_static_engine=0 if $_ eq "enable-static-engine";
$do_update=1 if $_ eq "update"; $do_update=1 if $_ eq "update";
$do_rewrite=1 if $_ eq "rewrite"; $do_rewrite=1 if $_ eq "rewrite";
$do_ctest=1 if $_ eq "ctest"; $do_ctest=1 if $_ eq "ctest";

View File

@ -8,6 +8,7 @@
my $arg; my $arg;
foreach $arg (@ARGV) { foreach $arg (@ARGV) {
$arg =~ tr|\\|/|;
&do_mkdir_p($arg); &do_mkdir_p($arg);
} }

View File

@ -235,10 +235,14 @@ $cflags.=" /Fd$out_def";
sub do_lib_rule sub do_lib_rule
{ {
local($objs,$target,$name,$shlib)=@_; local($objs,$target,$name,$shlib)=@_;
local($ret,$Name); local($ret);
$taget =~ s/\//$o/g if $o ne '/'; $taget =~ s/\//$o/g if $o ne '/';
($Name=$name) =~ tr/a-z/A-Z/; if ($name ne "")
{
$name =~ tr/a-z/A-Z/;
$name = "/def:ms/${name}.def";
}
# $target="\$(LIB_D)$o$target"; # $target="\$(LIB_D)$o$target";
$ret.="$target: $objs\n"; $ret.="$target: $objs\n";
@ -250,8 +254,10 @@ sub do_lib_rule
} }
else else
{ {
local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; local($ex)=($target =~ /O_CRYPTO/)?'':' $(L_CRYPTO)';
if ($FLAVOR =~ /CE/) if ($name eq "")
{}
elsif ($FLAVOR =~ /CE/)
{ {
$ex.=' winsock.lib $(WCECOMPAT)/lib/wcecompatex.lib'; $ex.=' winsock.lib $(WCECOMPAT)/lib/wcecompatex.lib';
} }
@ -261,7 +267,7 @@ sub do_lib_rule
$ex.=' wsock32.lib gdi32.lib advapi32.lib user32.lib'; $ex.=' wsock32.lib gdi32.lib advapi32.lib user32.lib';
$ex.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/); $ex.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/);
} }
$ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n"; $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target $name @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
} }
$ret.="\n"; $ret.="\n";
return($ret); return($ret);