X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=Configure;h=c5e318421d7d008066be64e464eee97fc0886cd1;hp=10be766d02071968c80db858d2667c51626bb14a;hb=c91a0a8343a22b5e4dff45ecfdee2eae8ab8a504;hpb=fa22f98f19d2bf6c898d6939103d686ae3b34ba6 diff --git a/Configure b/Configure index 10be766d02..c5e318421d 100755 --- a/Configure +++ b/Configure @@ -1,13 +1,9 @@ #! /usr/bin/env perl # -*- mode: perl; -*- -## ## Configure -- OpenSSL source tree configuration script -## If editing this file, run this command before committing -## make -f Makefile.in TABLE -## -require 5.000; +require 5.10.0; use strict; use File::Basename; use File::Spec::Functions qw/:DEFAULT abs2rel rel2abs/; @@ -202,7 +198,6 @@ foreach (sort glob($pattern) ) { print "Configuring OpenSSL version $config{version} (0x$config{version_num})\n"; -$config{perl}; $config{prefix}=""; $config{openssldir}=""; $config{processor}=""; @@ -220,7 +215,7 @@ $config{dirs} = [ "crypto", "ssl", "engines", "apps", "test", "tools" ]; # crypto/ subdirectories to build $config{sdirs} = [ "objects", - "md2", "md4", "md5", "sha", "mdc2", "hmac", "ripemd", "whrlpool", "poly1305", + "md2", "md4", "md5", "sha", "mdc2", "hmac", "ripemd", "whrlpool", "poly1305", "blake2", "des", "aes", "rc2", "rc4", "rc5", "idea", "bf", "cast", "camellia", "seed", "chacha", "modes", "bn", "ec", "rsa", "dsa", "dh", "dso", "engine", "buffer", "bio", "stack", "lhash", "rand", "err", @@ -238,11 +233,13 @@ my @dtls = qw(dtls1 dtls1_2); my @disablables = ( "aes", + "afalgeng", "asm", "async", "autoalginit", "autoerrinit", "bf", + "blake2", "camellia", "capieng", "cast", @@ -274,7 +271,7 @@ my @disablables = ( "hmac", "hw(-.+)?", "idea", - "locking", + "makedepend", "md2", "md4", "md5", @@ -396,7 +393,9 @@ my @disable_cascades = ( "dso" => [ "dynamic-engine" ], # Without position independent code, there can be no shared libraries or DSOs - "pic" => [ "shared", "dynamic-engine" ], + "pic" => [ "shared" ], + "shared" => [ "dynamic-engine" ], + "engine" => [ "afalgeng" ], ); # Avoid protocol support holes. Also disable all versions below N, if version @@ -438,7 +437,6 @@ my $no_sse2=0; my $user_cflags=""; my @user_defines=(); -my $unified = 0; $config{openssl_api_defines}=[]; $config{openssl_algorithm_defines}=[]; $config{openssl_thread_defines}=[]; @@ -449,6 +447,8 @@ my $target=""; $config{options}=""; $config{build_type} = "release"; +my $classic = 0; + my @argvcopy=@ARGV; if (grep /^reconf(igure)?$/, @argvcopy) { @@ -632,9 +632,9 @@ foreach (@argvcopy) } elsif (/^[-+]/) { - if (/^--unified$/) + if (/^--classic$/) { - $unified=1; + $classic=1; } elsif (/^--prefix=(.*)$/) { @@ -743,7 +743,7 @@ while (@tocheckfor) { my ($test, $descendents) = (shift @cascade_copy, shift @cascade_copy); if (ref($test) eq "CODE" ? $test->() : defined($disabled{$test})) { map { - $new_tocheckfor{$_} => 1; $disabled{$_} = "forced"; + $new_tocheckfor{$_} = 1; $disabled{$_} = "forced"; } grep { !defined($disabled{$_}) } @$descendents; } } @@ -795,6 +795,8 @@ foreach (sort (keys %disabled)) { } elsif (/^dynamic-engine$/) { } + elsif (/^makedepend$/) + { } elsif (/^zlib-dynamic$/) { } elsif (/^sse2$/) @@ -891,14 +893,20 @@ $config{shared_ldflag} = ""; $target{build_scheme} = [ $target{build_scheme} ] if ref($target{build_scheme}) ne "ARRAY"; -###### TO BE REMOVED BEFORE FINAL RELEASE +###### TO BE REMOVED WHEN CLASSIC BUILD IS REMOVED ###### -###### If the user has chosen --unified, we give it to them. -###### The same happens if we detect that they try to build out-of-source. -if ($target{build_file} eq "Makefile" - && $target{build_scheme}->[0] eq "unixmake" - && ($unified || $srcdir ne $blddir)) { - $target{build_scheme} = [ "unified", "unix" ]; +###### If the user has chosen --classic, we give it to them. +###### If they try that with an out-of-source config, we complain. +if ($target{build_scheme}->[0] eq "unified" && $classic) { + die "Can't perform a classic build out of source tree\n" + if $srcdir ne $blddir; + + $target{build_scheme} = { unix => [ "unixmake" ], + windows => [ "mk1mf", $target{build_scheme}->[2] ], + VMS => undef } -> {$target{build_scheme}->[1]}; + + die "Classic mode unavailable on this platform\n" + unless defined($target{build_scheme}); } my ($builder, $builder_platform, @builder_opts) = @@ -1087,21 +1095,32 @@ unless ($disabled{asm}) { } my $ecc = $target{cc}; -if ($^O ne "VMS") { +if ($^O ne "VMS" && !$disabled{makedepend}) { # Is the compiler gcc or clang? $ecc is used below to see if # error-checking can be turned on. my $ccpcc = "$config{cross_compile_prefix}$target{cc}"; - $config{makedepprog} = 'makedepend'; - open(PIPE, "$ccpcc --version 2>&1 | head -2 |"); + open(PIPE, "$ccpcc --version 2>&1 |"); + my $lines = 2; while ( ) { - $config{makedepprog} = $ccpcc if /clang|gcc/; + # Find the version number and save the major. + m|(?:.*)\b(\d+)\.\d+\.\d+\b(?:.*)|; + my $compiler_major = $1; + # We know that GNU C version 3 and up as well as all clang + # versions support dependency generation + $config{makedepprog} = $ccpcc + if (/clang/ || (/gcc/ && $compiler_major > 3)); $ecc = "clang" if /clang/; $ecc = "gcc" if /gcc/; + last if ($config{makedepprog} || !$lines--); } close(PIPE); + + $config{makedepprog} = which('makedepend') unless $config{makedepprog}; + $disabled{makedepend} = "unavailable" unless $config{makedepprog}; } + # Deal with bn_ops ################################################### $config{bn_ll} =0; @@ -1131,7 +1150,7 @@ die "Exactly one of SIXTY_FOUR_BIT|SIXTY_FOUR_BIT_LONG|THIRTY_TWO_BIT can be set # "Stringify" the C flags string. This permits it to be made part of a string # and works as well on command lines. -$config{cflags} =~ s/([\\\"])/\\\1/g; +$config{cflags} =~ s/([\\\"])/\\$1/g; if (defined($config{api})) { $config{openssl_api_defines} = [ "OPENSSL_MIN_API=".$apitable->{$config{api}} ]; @@ -1176,25 +1195,27 @@ else { $no_user_defines=1; } # ALL MODIFICATIONS TO %config and %target MUST BE DONE FROM HERE ON -$config{afalg}=""; -if ($target =~ m/^linux/) { - my $minver = 4*10000 + 1*100 + 0; - if ($config{cross_compile_prefix} eq "") { - my $verstr = `uname -r`; - my ($ma, $mi1, $mi2) = split("\\.", $verstr); - ($mi2) = $mi2 =~ /(\d+)/; - my $ver = $ma*10000 + $mi1*100 + $mi2; - if ($ver < $minver) { - $disabled{afalg} = "too-old-kernel"; - } else { - push @{$config{engdirs}}, "afalg"; +unless ($disabled{afalgeng}) { + $config{afalgeng}=""; + if ($target =~ m/^linux/) { + my $minver = 4*10000 + 1*100 + 0; + if ($config{cross_compile_prefix} eq "") { + my $verstr = `uname -r`; + my ($ma, $mi1, $mi2) = split("\\.", $verstr); + ($mi2) = $mi2 =~ /(\d+)/; + my $ver = $ma*10000 + $mi1*100 + $mi2; + if ($ver < $minver) { + $disabled{afalgeng} = "too-old-kernel"; + } else { + push @{$config{engdirs}}, "afalg"; + } } + } else { + $disabled{afalgeng} = "not-linux"; } -} else { - $disabled{afalg} = "not-linux"; } -push @{$config{openssl_other_defines}}, "OPENSSL_NO_AFALGENG" if ($disabled{afalg}); +push @{$config{openssl_other_defines}}, "OPENSSL_NO_AFALGENG" if ($disabled{afalgeng}); # If we use the unified build, collect information from build.info files my %unified_info = (); @@ -1315,7 +1336,13 @@ if ($builder eq "unified") { $l1 =~ s/\\$//; $l1.$l2 }), # Info we're looking for qr/^\s*IF\[((?:\\.|[^\\\]])*)\]\s*$/ - => sub { push @skip, !! $1; }, + => sub { + if (! @skip || $skip[$#skip] > 0) { + push @skip, !! $1; + } else { + push @skip, -1; + } + }, qr/^\s*ELSIF\[((?:\\.|[^\\\]])*)\]\s*$/ => sub { die "ELSIF out of scope" if ! @skip; die "ELSIF following ELSE" if abs($skip[$#skip]) == 2; @@ -1734,6 +1761,7 @@ close(OUT); print "IsMK1MF =", ($builder eq "mk1mf" ? "yes" : "no"), "\n"; print "CC =$target{cc}\n"; print "CFLAG =$target{cflags} $config{cflags}\n"; +print "SHARED_CFLAG =$target{shared_cflag}\n"; print "DEFINES =",join(" ", @{$target{defines}}, @{$config{defines}}),"\n"; print "LFLAG =$target{lflags}\n"; print "PLIB_LFLAG =$target{plib_lflags}\n"; @@ -1757,6 +1785,7 @@ print "MODES_OBJ =$target{modes_obj}\n"; print "PADLOCK_OBJ =$target{padlock_obj}\n"; print "CHACHA_ENC =$target{chacha_obj}\n"; print "POLY1305_OBJ =$target{poly1305_obj}\n"; +print "BLAKE2_OBJ =$target{blake2_obj}\n"; print "PROCESSOR =$config{processor}\n"; print "RANLIB =$target{ranlib}\n"; print "ARFLAGS =$target{arflags}\n"; @@ -1766,7 +1795,7 @@ print "SIXTY_FOUR_BIT_LONG mode\n" if $config{b64l}; print "SIXTY_FOUR_BIT mode\n" if $config{b64}; print "THIRTY_TWO_BIT mode\n" if $config{b32}; print "BN_LLONG mode\n" if $config{bn_ll}; -print "RC4 uses $config{rc4_int}\n" if $config{rc4_int} != $def_int; +print "RC4 uses $config{rc4_int}\n" if $config{rc4_int} ne $def_int; for (@generated_headers) { mkpath(catdir($blddir, dirname($_))); @@ -1913,39 +1942,6 @@ 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 -###### -###### If the user hasn't chosen --unified, try to nudge them. -if ($target{build_file} eq "Makefile" - && $target{build_scheme}->[0] eq "unixmake" - && !$unified) { - - my $plausible_builddir = - abs2rel(rel2abs("../_openssl-build_$target"),rel2abs(".")); - my $plausible_to_sourcedir = - abs2rel(rel2abs("."),rel2abs("../_openssl-build_$target")); - print <<"EOF"; - ----------------------------------------------------------------------- -Please consider configuring with the flag --unified . -It's to test out a new "unified" building system. - -One cool feature is that you can have your build directory elsewhere, -for example: - - make clean # Clean the current configuration away - mkdir $plausible_builddir - cd $plausible_builddir - $plausible_to_sourcedir/config --unified - make - make test - -Please report any problem you have. ----------------------------------------------------------------------- - -EOF -} - exit(0); ###################################################################### @@ -2066,7 +2062,7 @@ sub resolve_config { my $target = shift; my @breadcrumbs = @_; - my $extra_checks = defined($ENV{CONFIGURE_EXTRA_CHECKS}); +# my $extra_checks = defined($ENV{CONFIGURE_EXTRA_CHECKS}); if (grep { $_ eq $target } @breadcrumbs) { die "inherit_from loop! target backtrace:\n " @@ -2166,10 +2162,10 @@ sub resolve_config { unless(defined($table{$target}->{$_})) { delete $table{$target}->{$_}; } - if ($extra_checks && - $previous && !($add_called || $previous ~~ $table{$target}->{$_})) { - warn "$_ got replaced in $target\n"; - } +# if ($extra_checks && +# $previous && !($add_called || $previous ~~ $table{$target}->{$_})) { +# warn "$_ got replaced in $target\n"; +# } } # Finally done, return the result. @@ -2211,7 +2207,7 @@ sub usage exit(1); } -sub run_dofile() +sub run_dofile { my $out = shift; my @templates = @_; @@ -2361,10 +2357,12 @@ sub which my $path; foreach $path (split /:/, $ENV{PATH}) { - if (-f "$path/$name$target{exe_extension}" and -x _) + my $fullpath = "$path/$name$target{exe_extension}"; + if (-f $fullpath and -x $fullpath) { - return "$path/$name$target{exe_extension}" unless ($name eq "perl" and - system("$path/$name$target{exe_extension} -e " . '\'exit($]<5.0);\'')); + return $fullpath + unless ($name eq "perl" and + system("$fullpath -e " . '\'exit($]<5.0);\'')); } } }