X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=Configure;h=e0d086f8f217d6c0c5c01cc0e0227727d1ff488b;hp=e8fc933872607ef7f9ef930aaa17df5f7747e1b0;hb=14c4201958152392941615626da5d2800c98e943;hpb=44c8a5e2b9af8909844cc002c53049311634b314 diff --git a/Configure b/Configure index e8fc933872..e0d086f8f2 100755 --- a/Configure +++ b/Configure @@ -301,7 +301,8 @@ my @disablables = ( "engine", "err", "filenames", - "fuzz", + "fuzz-libfuzzer", + "fuzz-afl", "gost", "heartbeats", "hw(-.+)?", @@ -323,7 +324,6 @@ my @disablables = ( "rc5", "rdrand", "rfc3779", - "ripemd", "rmd160", "scrypt", "sctp", @@ -354,9 +354,10 @@ foreach my $proto ((@tls, @dtls)) push(@disablables, "$proto-method"); } -my @deprecated_disablables = ( - "ssl2", - "buf-freelists", +my %deprecated_disablables = ( + "ssl2" => undef, + "buf-freelists" => undef, + "ripemd" => "rmd160" ); # All of the following is disabled by default (RC5 was enabled before 0.9.8): @@ -365,7 +366,8 @@ our %disabled = ( # "what" => "comment" "asan" => "default", "ec_nistp_64_gcc_128" => "default", "egd" => "default", - "fuzz" => "default", + "fuzz-libfuzzer" => "default", + "fuzz-afl" => "default", "md2" => "default", "rc5" => "default", "sctp" => "default", @@ -461,17 +463,6 @@ while ((my $first, my $second) = (shift @list, shift @list)) { # To remove something from %disabled, use "enable-foo". # For symmetry, "disable-foo" is a synonym for "no-foo". -my @generated_headers = ( - "include/openssl/opensslconf.h", - "crypto/include/internal/bn_conf.h", - "crypto/include/internal/dso_conf.h" - ); - -my @generated_by_make_headers = ( - "crypto/buildinf.h" - ); - - my $no_sse2=0; &usage if ($#ARGV < 0); @@ -561,21 +552,17 @@ foreach (@argvcopy) s /^zlib-dynamic$/enable-zlib-dynamic/; if (/^(no|disable|enable)-(.+)$/) - { - my $word = $2; - if (grep { $word =~ /^${_}$/ } @deprecated_disablables) - { - $deprecated_options{$_} = 1; - next; - } - elsif (!grep { $word =~ /^${_}$/ } @disablables) - { - $unsupported_options{$_} = 1; - next; - } - } - if (/^no-(.+)$/ || /^disable-(.+)$/) - { + { + my $word = $2; + if (!exists $deprecated_disablables{$word} + && !grep { $word =~ /^${_}$/ } @disablables) + { + $unsupported_options{$_} = 1; + next; + } + } + if (/^no-(.+)$/ || /^disable-(.+)$/) + { foreach my $proto ((@tls, @dtls)) { if ($1 eq "$proto-method") @@ -614,6 +601,14 @@ foreach (@argvcopy) { $disabled{"dynamic-engine"} = "option"; } + elsif (exists $deprecated_disablables{$1}) + { + $deprecated_options{$_} = 1; + if (defined $deprecated_disablables{$1}) + { + $disabled{$deprecated_disablables{$1}} = "option"; + } + } else { $disabled{$1} = "option"; @@ -698,6 +693,14 @@ foreach (@argvcopy) { $withargs{zlib_include}=$1; } + elsif (/^--with-fuzzer-lib=(.*)$/) + { + $withargs{fuzzer_lib}=$1; + } + elsif (/^--with-fuzzer-include=(.*)$/) + { + $withargs{fuzzer_include}=$1; + } elsif (/^--with-fipslibdir=(.*)$/) { $config{fipslibdir}="$1/"; @@ -1042,11 +1045,15 @@ if ($disabled{"dynamic-engine"}) { $config{dynamic_engines} = 1; } -unless ($disabled{fuzz}) { +unless ($disabled{"fuzz-libfuzzer"}) { push @{$config{dirs}}, "fuzz"; $config{cflags} .= "-fsanitize-coverage=edge,indirect-calls "; } +unless ($disabled{"fuzz-afl"}) { + push @{$config{dirs}}, "fuzz"; +} + unless ($disabled{asan}) { $config{cflags} .= "-fsanitize=address "; } @@ -1057,7 +1064,8 @@ unless ($disabled{ubsan}) { $config{cflags} .= "-fsanitize=undefined -fno-sanitize-recover=all "; } -unless ($disabled{fuzz} && $disabled{asan} && $disabled{ubsan}) { +unless ($disabled{"fuzz-libfuzzer"} && $disabled{"fuzz-afl"} + && $disabled{asan} && $disabled{ubsan}) { $config{cflags} .= "-fno-omit-frame-pointer -g "; } # @@ -1379,6 +1387,7 @@ if ($builder eq "unified") { $template->fill_in(HASH => { config => \%config, target => \%target, disabled => \%disabled, + withargs => \%withargs, builddir => abs2rel($buildd, $blddir), sourcedir => abs2rel($sourced, $blddir), buildtop => abs2rel($blddir, $blddir), @@ -1449,7 +1458,7 @@ if ($builder eq "unified") { qr/^\s*INCLUDE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/ => sub { push @{$includes{$1}}, tokenize($2) if !@skip || $skip[$#skip] > 0 }, - qr/^\s*DEPEND\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/ + qr/^\s*DEPEND\[((?:\\.|[^\\\]])*)\]\s*=\s*(.*)\s*$/ => sub { push @{$depends{$1}}, tokenize($2) if !@skip || $skip[$#skip] > 0 }, qr/^\s*GENERATE\[((?:\\.|[^\\\]])+)\]\s*=\s*(.*)\s*$/ @@ -1673,11 +1682,11 @@ EOF foreach (keys %depends) { my $dest = $_; - my $ddest = cleanfile($sourced, $_, $blddir); + my $ddest = $dest eq "" ? "" : cleanfile($sourced, $_, $blddir); # If the destination doesn't exist in source, it can only be # a generated file in the build tree. - if (! -f $ddest) { + if ($ddest ne "" && ! -f $ddest) { $ddest = cleanfile($buildd, $_, $blddir); if ($unified_info{rename}->{$ddest}) { $ddest = $unified_info{rename}->{$ddest}; @@ -1694,7 +1703,7 @@ EOF if (! -f $d || (grep { $d eq $_ } map { cleanfile($srcdir, $_, $blddir) } - (@generated_headers, @generated_by_make_headers))) { + grep { /\.h$/ } keys %{$unified_info{generate}})) { $d = cleanfile($buildd, $_, $blddir); } # Take note if the file to depend on is being renamed @@ -1704,7 +1713,7 @@ EOF $unified_info{depends}->{$ddest}->{$d} = 1; # If we depend on a header file or a perl module, let's make # sure it can get included - if ($d =~ /\.(h|pm)$/) { + if ($dest ne "" && $d =~ /\.(h|pm)$/) { my $i = dirname($d); push @{$unified_info{includes}->{$ddest}}, $i unless grep { $_ eq $i } @{$unified_info{includes}->{$ddest}}; @@ -1920,57 +1929,12 @@ 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} ne $def_int; -for (@generated_headers) { - mkpath(catdir($blddir, dirname($_))); - run_dofile(catfile($blddir, $_), - catfile($srcdir, $_.".in")); -} - -### -### When the old "unixmake" scheme goes away, so does this function -### -sub build_Makefile { - run_dofile("Makefile","Makefile.in"); - - # Copy all Makefile.in to Makefile (except top-level) - use File::Find; - use IO::File; - find( - { - preprocess => sub { - grep(!/^\./, @_); - }, - wanted => sub { - return if ($_ ne "Makefile.in" || $File::Find::dir eq "."); - my $in = IO::File->new($_, "r") or - die sprintf "Error reading Makefile.in in %s: !$\n", - $File::Find::dir; - my $out = IO::File->new("Makefile", "w") or - die sprintf "Error writing Makefile in %s: !$\n", - $File::Find::dir; - print $out "# Generated from $_, do not edit\n"; - while (my $line = <$in>) { print $out $line } - $in->close() or - die sprintf "Error reading Makefile.in in %s: !$\n", - $File::Find::dir; - $out->close() or - die sprintf "Error writing Makefile in %s: !$\n", - $File::Find::dir; - }, - }, - "."); -} - my %builders = ( unified => sub { run_dofile(catfile($blddir, $target{build_file}), $config{build_file_template}, catfile($srcdir, "Configurations", "common.tmpl")); }, - unixmake => sub { - build_Makefile(); - - }, ); $builders{$builder}->($builder_platform, @builder_opts);