summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xConfigure29
-rw-r--r--Makefile.in53
-rw-r--r--crypto/engine/eng_list.c5
-rw-r--r--include/openssl/opensslconf.h.in7
4 files changed, 50 insertions, 44 deletions
diff --git a/Configure b/Configure
index a6310366ce..75b8558413 100755
--- a/Configure
+++ b/Configure
@@ -578,6 +578,8 @@ foreach (@argvcopy)
if (/^--prefix=(.*)$/)
{
$config{prefix}=$1;
+ die "Directory given with --prefix MUST be absolute\n"
+ unless file_name_is_absolute($config{prefix});
}
elsif (/^--api=(.*)$/)
{
@@ -813,11 +815,6 @@ my $make = $ENV{'MAKE'} || "make";
$config{cross_compile_prefix} = $ENV{'CROSS_COMPILE'}
if $config{cross_compile_prefix} eq "";
-$config{prefix} = "/usr/local" if !$config{prefix};
-$config{openssldir} = "ssl" if !$config{openssldir};
-$config{openssldir} = catdir($config{prefix}, $config{openssldir})
- unless file_name_is_absolute($config{openssldir});
-
# Allow environment CC to override compiler...
$target{cc} = $ENV{CC} || $target{cc};
@@ -850,15 +847,6 @@ $target{build_scheme} = [ $target{build_scheme} ]
my ($builder, $builder_platform, @builder_opts) =
@{$target{build_scheme}};
-# if $config{prefix}/lib$target{multilib} is not an existing directory, then
-# assume that it's not searched by linker automatically, in
-# which case adding $target{multilib} suffix causes more grief than
-# we're ready to tolerate, so don't...
-$target{multilib}="" if !-d "$config{prefix}/lib$target{multilib}";
-
-$config{libdir}="lib$target{multilib}" if $config{libdir} eq "";
-$config{enginesdir}=$config{prefix} . "/" . $config{libdir} . "/engines";
-
push @{$config{defines}},
map { (my $x = $_) =~ s/^OPENSSL_NO_/OPENSSL_EXPERIMENTAL_/; $x }
@{$config{openssl_experimental_defines}};
@@ -1007,19 +995,6 @@ if ($builder ne "mk1mf")
#
# Platform fix-ups
#
-# Unlike other OSes (like Solaris, Linux, Tru64, IRIX) BSD run-time
-# linkers (tested OpenBSD, NetBSD and FreeBSD) "demand" RPATH set on
-# .so objects. Apparently application RPATH is not global and does
-# not apply to .so linked with other .so. Problem manifests itself
-# when libssl.so fails to load libcrypto.so. One can argue that we
-# should engrave this into Makefile.shared rules or into BSD-* config
-# lines above. Meanwhile let's try to be cautious and pass -rpath to
-# linker only when --prefix is not /usr.
-if ($target =~ /^BSD-/)
- {
- $target{shared_ldflag}.=" -Wl,-rpath,\$\$(LIBRPATH)" if ($config{prefix} !~ m|^/usr[/]*$|);
- }
-
if ($target{sys_id} ne "")
{
push @{$config{openssl_sys_defines}}, "OPENSSL_SYS_$target{sys_id}";
diff --git a/Makefile.in b/Makefile.in
index eeea0057ba..44362d0a96 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -28,8 +28,38 @@ INSTALL_PREFIX={- $config{install_prefix} -}
# Do not edit these manually. Use Configure with --prefix or --openssldir
# to change this! Short explanation in the top comment in Configure
-INSTALLTOP={- $config{prefix} -}
-OPENSSLDIR={- $config{openssldir} -}
+INSTALLTOP={- # $prefix is used in the OPENSSLDIR perl snippet
+ #
+ our $prefix = $config{prefix} || "/usr/local";
+ $prefix -}
+OPENSSLDIR={- #
+ # The logic here is that if no --openssldir was given,
+ # OPENSSLDIR will get the value from $prefix plus "/ssl".
+ # If --openssldir was given and the value is an absolute
+ # path, OPENSSLDIR will get its value without change.
+ # If the value from --openssldir is a relative path,
+ # OPENSSLDIR will get $prefix with the --openssldir
+ # value appended as a subdirectory.
+ #
+ use File::Spec::Functions;
+ our $openssldir =
+ $config{openssldir} ?
+ (file_name_is_absolute($config{openssldir}) ?
+ $config{openssldir}
+ : catdir($prefix, $config{openssldir}))
+ : catdir($prefix, "ssl");
+ $openssldir -}
+LIBDIR={- #
+ # if $prefix/lib$target{multilib} is not an existing
+ # directory, then assume that it's not searched by linker
+ # automatically, in which case adding $target{multilib} suffix
+ # causes more grief than we're ready to tolerate, so don't...
+ our $multilib =
+ -d "$prefix/lib$target{multilib}" ? $target{multilib} : "";
+ our $libdir = $config{libdir} || "lib$multilib";
+ $libdir -}
+ENGINESDIR={- use File::Spec::Functions;
+ catdir($prefix,$libdir,"engines") -}
# NO_IDEA - Define to build without the IDEA algorithm
# NO_RC4 - Define to build without the RC4 algorithm
@@ -60,7 +90,7 @@ OPENSSLDIR={- $config{openssldir} -}
CROSS_COMPILE= {- $config{cross_compile_prefix} -}
CC= $(CROSS_COMPILE){- $target{cc} -}
-CFLAG={- join(" ",map { "-D".$_} @{$config{defines}}) -} {- $config{cflags} -}
+CFLAG={- join(" ",(map { "-D".$_} @{$config{defines}}),"-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $config{cflags} -}
DEPFLAG= {- join(" ",map { "-D".$_} @{$config{depdefines}}) -}
LDFLAG= {- $config{lflags} -}
PLIB_LDFLAG= {- $config{plib_lflags} -}
@@ -75,7 +105,7 @@ PERL= {- $config{perl} -}
RM= rm -f
TAR= tar
TARFLAGS= --no-recursion
-LIBDIR={- $config{libdir} -}
+MAKEDEPPROG=$(CROSS_COMPILE){- $config{makedepprog} -}
# We let the C compiler driver to take care of .s files. This is done in
# order to be excused from maintaining a separate set of architecture
@@ -160,7 +190,20 @@ LIBS= libcrypto.a libssl.a
SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
SHARED_SSL=libssl$(SHLIB_EXT)
SHARED_LIBS={- '$(SHARED_CRYPTO) $(SHARED_SSL)' if (!$config{no_shared}) -}
-SHARED_LDFLAG={- $target{shared_ldflag} -}
+SHARED_LDFLAG={- $target{shared_ldflag}
+ # Unlike other OSes (like Solaris, Linux, Tru64,
+ # IRIX) BSD run-time linkers (tested OpenBSD, NetBSD
+ # and FreeBSD) "demand" RPATH set on .so objects.
+ # Apparently application RPATH is not global and
+ # does not apply to .so linked with other .so.
+ # Problem manifests itself when libssl.so fails to
+ # load libcrypto.so. One can argue that we should
+ # engrave this into Makefile.shared rules or into
+ # BSD-* config lines above. Meanwhile let's try to
+ # be cautious and pass -rpath to linker only when
+ # $prefix is not /usr.
+ . ($config{target} =~ m|^BSD-| && $prefix !~ m|^/usr/.*$|
+ ? " -Wl,-rpath,\$\$(LIBRPATH)" : "") -}
GENERAL= Makefile
BASENAME= openssl
diff --git a/crypto/engine/eng_list.c b/crypto/engine/eng_list.c
index cd6757f443..8ca1f80041 100644
--- a/crypto/engine/eng_list.c
+++ b/crypto/engine/eng_list.c
@@ -355,13 +355,8 @@ ENGINE *ENGINE_by_id(const char *id)
* Prevent infinite recursion if we're looking for the dynamic engine.
*/
if (strcmp(id, "dynamic")) {
-# ifdef OPENSSL_SYS_VMS
- if ((load_dir = getenv("OPENSSL_ENGINES")) == 0)
- load_dir = "SSLROOT:[ENGINES]";
-# else
if ((load_dir = getenv("OPENSSL_ENGINES")) == 0)
load_dir = ENGINESDIR;
-# endif
iterator = ENGINE_by_id("dynamic");
if (!iterator || !ENGINE_ctrl_cmd_string(iterator, "ID", id, 0) ||
!ENGINE_ctrl_cmd_string(iterator, "DIR_LOAD", "2", 0) ||
diff --git a/include/openssl/opensslconf.h.in b/include/openssl/opensslconf.h.in
index c22209bdc3..d9f64292ca 100644
--- a/include/openssl/opensslconf.h.in
+++ b/include/openssl/opensslconf.h.in
@@ -123,13 +123,6 @@ EOF
/* Generate 80386 code? */
{- $config{processor} eq "386" ? "#define" : "#undef" -} I386_ONLY
-#if !defined(VMS) && !defined(__VMS) /* VMS uses logical names instead */
-# if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
-# define ENGINESDIR {- quotify1($config{enginesdir}) -}
-# define OPENSSLDIR {- quotify1($config{openssldir}) -}
-# endif
-#endif
-
#undef OPENSSL_UNISTD
#define OPENSSL_UNISTD {- $target{unistd} -}