X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=Configure;h=eb7e54c2b26c72ec12bd67fef3f8744b66197566;hp=da9e5a3979525b262b588f9f9065ebc57ce3b7b2;hb=7d65007238e86e59fcf31d23fcefa01e3b30cc37;hpb=ae4c7450754ea13265edd69e6ff74d87c89401cd diff --git a/Configure b/Configure index da9e5a3979..eb7e54c2b2 100755 --- a/Configure +++ b/Configure @@ -274,12 +274,13 @@ my @disablables = ( "hmac", "hw(-.+)?", "idea", - "locking", + "makedepend", "md2", "md4", "md5", "mdc2", "md[-_]ghost94", + "multiblock", "nextprotoneg", "ocb", "ocsp", @@ -437,7 +438,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}=[]; @@ -448,6 +448,8 @@ my $target=""; $config{options}=""; $config{build_type} = "release"; +my $classic = 0; + my @argvcopy=@ARGV; if (grep /^reconf(igure)?$/, @argvcopy) { @@ -631,9 +633,9 @@ foreach (@argvcopy) } elsif (/^[-+]/) { - if (/^--unified$/) + if (/^--classic$/) { - $unified=1; + $classic=1; } elsif (/^--prefix=(.*)$/) { @@ -794,6 +796,8 @@ foreach (sort (keys %disabled)) { } elsif (/^dynamic-engine$/) { } + elsif (/^makedepend$/) + { } elsif (/^zlib-dynamic$/) { } elsif (/^sse2$/) @@ -890,14 +894,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) = @@ -1086,21 +1096,28 @@ 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'; + $config{makedepprog} = which('makedepend'); open(PIPE, "$ccpcc --version 2>&1 | head -2 |"); while ( ) { - $config{makedepprog} = $ccpcc if /clang|gcc/; + # Find the version number and save the major. + m|(?:.*)\b(\d+)\.\d+\.\d+\b(?:.*)|; + # We know that GNU C version 3 and up as well as all clang + # versions support dependency generation + $config{makedepprog} = $ccpcc if /clang/ || (/gcc/ && $1 > 3); $ecc = "clang" if /clang/; $ecc = "gcc" if /gcc/; } close(PIPE); + + $disabled{makedepend} = "unavailable" unless $config{makedepprog}; } + # Deal with bn_ops ################################################### $config{bn_ll} =0; @@ -1175,22 +1192,24 @@ 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{engine}) { + $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"; + } } + } else { + $disabled{afalg} = "not-linux"; } -} else { - $disabled{afalg} = "not-linux"; } push @{$config{openssl_other_defines}}, "OPENSSL_NO_AFALGENG" if ($disabled{afalg}); @@ -1274,6 +1293,7 @@ if ($builder eq "unified") { my @engines = (); my @scripts = (); my @extra = (); + my @overrides = (); my @intermediates = (); my @rawlines = (); @@ -1313,7 +1333,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; @@ -1342,6 +1368,9 @@ if ($builder eq "unified") { qr/^\s*EXTRA\s*=\s*(.*)\s*$/ => sub { push @extra, split(/\s+/, $1) if !@skip || $skip[$#skip] > 0 }, + qr/^\s*OVERRIDES\s*=\s*(.*)\s*$/ + => sub { push @overrides, split(/\s+/, $1) + if !@skip || $skip[$#skip] > 0 }, qr/^\s*ORDINALS\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/, => sub { push @{$ordinals{$1}}, split(/\s+/, $2) @@ -1440,6 +1469,11 @@ EOF $unified_info{extra}->{$extra} = 1; } + foreach (@overrides) { + my $override = cleanfile($buildd, $_, $blddir); + $unified_info{overrides}->{$override} = 1; + } + push @{$unified_info{rawlines}}, @rawlines; unless ($disabled{shared}) { @@ -1583,7 +1617,7 @@ EOF ### Make unified_info a bit more efficient # One level structures - foreach (("programs", "libraries", "engines", "scripts", "extra")) { + foreach (("programs", "libraries", "engines", "scripts", "extra", "overrides")) { $unified_info{$_} = [ sort keys %{$unified_info{$_}} ]; } # Two level structures @@ -1724,6 +1758,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"; @@ -1903,39 +1938,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); ###################################################################### @@ -2056,7 +2058,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 " @@ -2156,10 +2158,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. @@ -2351,10 +2353,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);\'')); } } }