提交 bc2aadad 编写于 作者: G Geoff Thorpe

This helps make the DSO stuff more portable;

* "no-dso" option available in Configure so that all DSO methods will
  return NULL, overriding any support the platform might otherwise
  have built.
* dlfcn_no_h config string now available rather than just dlfcn. This
  is for platforms that have dlfcn.h functions but do not have (or
  need) the dlfcn.h header file.
上级 6ef4d9d5
...@@ -10,7 +10,7 @@ use strict; ...@@ -10,7 +10,7 @@ use strict;
# see INSTALL for instructions. # see INSTALL for instructions.
my $usage="Usage: Configure [no-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [rsaref] [no-threads] [no-asm] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] os/compiler[:flags]\n"; my $usage="Usage: Configure [no-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [rsaref] [no-threads] [no-asm] [no-dso] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] os/compiler[:flags]\n";
# Options: # Options:
# #
...@@ -28,6 +28,8 @@ my $usage="Usage: Configure [no-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [- ...@@ -28,6 +28,8 @@ my $usage="Usage: Configure [no-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-
# multithreaded applications (default is "threads" if we # multithreaded applications (default is "threads" if we
# know how to do it) # know how to do it)
# no-asm do not use assembler # no-asm do not use assembler
# no-dso do not compile in any native shared-library methods. This
# will ensure that all methods just return NULL.
# 386 generate 80386 code # 386 generate 80386 code
# no-<cipher> build without specified algorithm (rsa, idea, rc5, ...) # no-<cipher> build without specified algorithm (rsa, idea, rc5, ...)
# -<xxx> +<xxx> compiler options are passed through # -<xxx> +<xxx> compiler options are passed through
...@@ -384,6 +386,7 @@ my $install_prefix=""; ...@@ -384,6 +386,7 @@ my $install_prefix="";
my $no_threads=0; my $no_threads=0;
my $threads=0; my $threads=0;
my $no_asm=0; my $no_asm=0;
my $no_dso=0;
my @skip=(); my @skip=();
my $Makefile="Makefile.ssl"; my $Makefile="Makefile.ssl";
my $des_locl="crypto/des/des_locl.h"; my $des_locl="crypto/des/des_locl.h";
...@@ -431,6 +434,8 @@ foreach (@ARGV) ...@@ -431,6 +434,8 @@ foreach (@ARGV)
$flags .= "-DNO_ASM "; $flags .= "-DNO_ASM ";
$openssl_other_defines .= "#define NO_ASM\n"; $openssl_other_defines .= "#define NO_ASM\n";
} }
elsif (/^no-dso$/)
{ $no_dso=1; }
elsif (/^no-threads$/) elsif (/^no-threads$/)
{ $no_threads=1; } { $no_threads=1; }
elsif (/^threads$/) elsif (/^threads$/)
...@@ -543,14 +548,28 @@ print "IsWindows=$IsWindows\n"; ...@@ -543,14 +548,28 @@ print "IsWindows=$IsWindows\n";
split(/\s*:\s*/,$table{$target} . ":" x 20 , -1); split(/\s*:\s*/,$table{$target} . ":" x 20 , -1);
$cflags="$flags$cflags" if ($flags ne ""); $cflags="$flags$cflags" if ($flags ne "");
# For now the translation from dso_scheme to cflags is trivial. This may well # The DSO code currently always implements all functions so that no
# "grow", eg. we could add "dlfcn_no_h" to do what "dlfcn" does and have the # applications will have to worry about that from a compilation point
# latter additionally define HAVE_DLFCN_H (some systems don't have dlfcn.h and # of view. However, the "method"s may return zero unless that platform
# it's not needed). # has support compiled in for them. Currently each method is enabled
if ($dso_scheme ne "") { # by a define "DSO_<name>" ... we translate the "dso_scheme" config
# string entry into using the following logic;
if (!$no_dso && $dso_scheme ne "")
{
$dso_scheme =~ tr/[a-z]/[A-Z]/; $dso_scheme =~ tr/[a-z]/[A-Z]/;
$cflags = "-DDSO_$dso_scheme $cflags"; if ($dso_scheme eq "DLFCN")
} {
$cflags = "-DDSO_DLFCN -DHAVE_DLFCN_H $cflags";
}
elsif ($dso_scheme eq "DLFCN_NO_H")
{
$cflags = "-DDSO_DLFCN $cflags";
}
else
{
$cflags = "-DDSO_$dso_scheme $cflags";
}
}
my $thread_cflags; my $thread_cflags;
my $thread_defines; my $thread_defines;
......
...@@ -67,7 +67,9 @@ DSO_METHOD *DSO_METHOD_dlfcn(void) ...@@ -67,7 +67,9 @@ DSO_METHOD *DSO_METHOD_dlfcn(void)
} }
#else #else
#ifdef HAVE_DLFCN_H
#include <dlfcn.h> #include <dlfcn.h>
#endif
static int dlfcn_load(DSO *dso, char *filename); static int dlfcn_load(DSO *dso, char *filename);
static int dlfcn_unload(DSO *dso); static int dlfcn_unload(DSO *dso);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册