X-Git-Url: https://git.openssl.org/gitweb/?a=blobdiff_plain;f=Configure;h=1a89becf93280714f4ab3792b5a471a970a35dbb;hb=e80381e1a3309f5d4a783bcaa508a90187a48882;hp=8fb2969a96d8402be8952bce6c5a1869bc165346;hpb=3a55c92bbad0b720c9a3d7a56fa3c351b65a89ee;p=openssl.git diff --git a/Configure b/Configure index 8fb2969a96..1a89becf93 100755 --- a/Configure +++ b/Configure @@ -46,6 +46,8 @@ my $usage="Usage: Configure [no- ...] [enable- ...] [-Dxxx] [-lx # multithreaded applications (default is "threads" if we # know how to do it) # [no-]shared [don't] try to create shared libraries when supported. +# [no-]pic [don't] try to build position independent code when supported. +# If disabled, it also disables shared and dynamic-engines. # 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. @@ -261,7 +263,7 @@ my @disablables = ( "dsa", "dso", "dtls", - "dynamic[-_]engine", + "dynamic-engine", "ec", "ec2m", "ecdh", @@ -284,6 +286,7 @@ my @disablables = ( "nextprotoneg", "ocb", "ocsp", + "pic", "poly1305", "posix-io", "psk", @@ -325,6 +328,10 @@ foreach my $proto ((@tls, @dtls)) push(@disablables, "$proto-method"); } +my @deprecated_disablables = ( + "ssl2", + ); + # All of the following is disabled by default (RC5 was enabled before 0.9.8): my %disabled = ( # "what" => "comment" @@ -335,6 +342,7 @@ my %disabled = ( # "what" => "comment" "sctp" => "default", "shared" => "default", "ssl-trace" => "default", + "static-engine" => "default", "unit-test" => "default", "zlib" => "default", "crypto-mdebug" => "default", @@ -380,6 +388,12 @@ my @disable_cascades = ( "tlsext" => [ "srp", "heartbeats" ], "crypto-mdebug" => [ "crypto-mdebug-backtrace" ], + + # Without DSO, we can't load dynamic engines, so don't build them dynamic + "dso" => [ "dynamic-engine" ], + + # Without position independent code, there can be no shared libraries or DSOs + "pic" => [ "shared", "dynamic-engine" ], ); # Avoid protocol support holes. Also disable all versions below N, if version @@ -406,7 +420,8 @@ while ((my $first, my $second) = (shift @list, shift @list)) { my @generated_headers = ( "include/openssl/opensslconf.h", - "crypto/include/internal/bn_conf.h" + "crypto/include/internal/bn_conf.h", + "crypto/include/internal/dso_conf.h" ); my @generated_by_make_headers = ( @@ -485,6 +500,7 @@ if (grep /^reconf(igure)?$/, @argvcopy) { $config{perlargv} = [ @argvcopy ]; my %unsupported_options = (); +my %deprecated_options = (); foreach (@argvcopy) { # VMS is a case insensitive environment, and depending on settings @@ -506,7 +522,12 @@ foreach (@argvcopy) if (/^(no|disable|enable)-(.+)$/) { my $word = $2; - if (!grep { $word =~ /^${_}$/ } @disablables) + if (grep { $word =~ /^${_}$/ } @deprecated_disablables) + { + $deprecated_options{$_} = 1; + next; + } + elsif (!grep { $word =~ /^${_}$/ } @disablables) { $unsupported_options{$_} = 1; next; @@ -543,6 +564,14 @@ foreach (@argvcopy) $disabled{$proto} = "option(tls)"; } } + elsif ($1 eq "static-engine") + { + delete $disabled{"dynamic-engine"}; + } + elsif ($1 eq "dynamic-engine") + { + $disabled{"dynamic-engine"} = "option"; + } else { $disabled{$1} = "option"; @@ -550,6 +579,14 @@ foreach (@argvcopy) } elsif (/^enable-(.+)$/) { + if ($1 eq "static-engine") + { + $disabled{"dynamic-engine"} = "option"; + } + elsif ($1 eq "dynamic-engine") + { + delete $disabled{"dynamic-engine"}; + } my $algo = $1; delete $disabled{$algo}; @@ -673,6 +710,11 @@ foreach (@argvcopy) die "***** Unsupported api compatibility level: $config{api}\n", } + if (keys %deprecated_options) + { + warn "***** Deprecated options: ", + join(", ", keys %deprecated_options), "\n"; + } if (keys %unsupported_options) { die "***** Unsupported options: ", @@ -743,9 +785,11 @@ foreach (sort (keys %disabled)) { $no_threads = 1; } elsif (/^shared$/) { $config{no_shared} = 1; } + elsif (/^pic$/) + { } elsif (/^zlib$/) { $zlib = 0; } - elsif (/^static-engine$/) + elsif (/^dynamic-engine$/) { } elsif (/^zlib-dynamic$/) { } @@ -809,10 +853,18 @@ my %target = ( %{$table{$base_target}}, resolve_config($target) ); &usage if (!%target || $target{template}); $target{exe_extension}=""; -$target{exe_extension}=".exe" if ($config{target} eq "Cygwin" || $config{target} eq "DJGPP" || $config{target} =~ /^mingw/); +$target{exe_extension}=".exe" if ($config{target} eq "DJGPP" + || $config{target} =~ /^(?:Cygwin|mingw)/); $target{exe_extension}=".nlm" if ($config{target} =~ /netware/); $target{exe_extension}=".pm" if ($config{target} =~ /vos/); +($target{shared_extension_simple}=$target{shared_extension}) + =~ s|\.\$\(SHLIB_MAJOR\)\.\$\(SHLIB_MINOR\)||; +$target{dso_extension}=$target{shared_extension_simple}; +($target{shared_import_extension}=$target{shared_extension_simple}.".a") + if ($config{target} =~ /^(?:Cygwin|mingw)/); + + $default_ranlib = which("ranlib") || "true"; $config{perl} = $ENV{'PERL'} || which("perl5") || which("perl") || "perl"; my $make = $ENV{'MAKE'} || "make"; @@ -971,36 +1023,33 @@ if (defined($disabled{"deprecated"})) { if ($target{shared_target} eq "") { - $no_shared_warn = 1 if !$config{no_shared} && !$config{fips}; + $no_shared_warn = 1 + if ((!$config{no_shared} || !$disabled{"dynamic-engine"}) + && !$config{fips}); $config{no_shared} = 1; - } -if (!$config{no_shared}) - { - if ($target{shared_cflag} ne "") - { - push @{$config{defines}}, "OPENSSL_PIC"; - $config{cflags} = "$target{shared_cflag} $config{cflags}"; - } + $disabled{pic} = $disabled{shared} = $disabled{"dynamic-engine"} = + "no-shared-target"; } -if ($builder ne "mk1mf") - { - # add {no-}static-engine to options to allow mkdef.pl to work without extra arguments - if ($config{no_shared}) - { - push @{$config{openssl_other_defines}}, "OPENSSL_NO_DYNAMIC_ENGINE"; - $config{options}.=" static-engine"; - } - else - { - push @{$config{openssl_other_defines}}, "OPENSSL_NO_STATIC_ENGINE"; - $config{options}.=" no-static-engine"; - } - } +if ($disabled{"dynamic-engine"}) { + push @{$config{defines}}, "OPENSSL_NO_DYNAMIC_ENGINE"; + $config{dynamic_engines} = 0; +} else { + push @{$config{defines}}, "OPENSSL_NO_STATIC_ENGINE"; + $config{dynamic_engines} = 1; +} # # Platform fix-ups # + +# This saves the build files from having to check +if ($disabled{pic}) + { + $target{shared_cflag} = $target{shared_ldflag} = + $target{shared_rcflag} = ""; + } + if ($target{sys_id} ne "") { push @{$config{openssl_sys_defines}}, "OPENSSL_SYS_$target{sys_id}"; @@ -1035,7 +1084,7 @@ if (!$no_asm) { if ($target{md5_asm_src}) { push @{$config{defines}}, "MD5_ASM"; } - $target{cast_asm_src}=$table{BASE}->{cast_asm_src} if (!$config{no_shared}); # CAST assembler is not PIC + $target{cast_asm_src}=$table{BASE}->{cast_asm_src} unless $disabled{pic}; # CAST assembler is not PIC if ($target{rmd160_asm_src}) { push @{$config{defines}}, "RMD160_ASM"; } @@ -1370,8 +1419,8 @@ if ($builder eq "unified") { $unified_info{libraries}->{$library} = 1; } - die <<"EOF" if $config{no_shared} && scalar @engines; -ENGINES can only be used if configured with 'shared'. + die <<"EOF" if scalar @engines and !$config{dynamic_engines}; +ENGINES can only be used if configured with 'dynamic-engine'. This is usually a fault in a build.info file. EOF foreach (@engines) { @@ -1835,10 +1884,11 @@ EOF print <<"EOF" if ($no_shared_warn); -You gave the option 'shared', which is not supported on this platform, so -we will pretend you gave the option 'no-shared'. If you know how to implement -shared libraries, please let us know (but please first make sure you have -tried with a current version of OpenSSL). +The options 'shared', 'pic' and 'dynamic-engine' aren't supported on this +platform, so we will pretend you gave the option 'no-pic', which also disables +'shared' and 'dynamic-engine'. If you know how to implement shared libraries +or position independent code, please let us know (but please first make sure +you have tried with a current version of OpenSSL). EOF ###### TO BE REMOVED BEFORE FINAL RELEASE @@ -2167,6 +2217,9 @@ sub print_table_entry "shared_ldflag", "shared_rcflag", "shared_extension", + "shared_extension_simple", + "shared_import_extension", + "dso_extension", "obj_extension", "exe_extension", "ranlib",