my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-egd] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--config=FILE] os/compiler[:flags]\n";
+my $banner = <<"EOF";
+
+**********************************************************************
+*** ***
+*** OpenSSL has been successfully configured ***
+*** ***
+*** If you encounter a problem while building, please open an ***
+*** issue on GitHub <https://github.com/openssl/openssl/issues> ***
+*** and include the output from the following command: ***
+*** ***
+*** perl configdata.pm --dump ***
+*** ***
+*** (If you are new to OpenSSL, you might want to consult the ***
+*** 'Troubleshooting' section in the INSTALL.md file first) ***
+*** ***
+**********************************************************************
+EOF
+
# Options:
#
# --config add the given configuration file, which will be read after
# given with --prefix.
# This becomes the value of OPENSSLDIR in Makefile and in C.
# (Default: PREFIX/ssl)
+# --banner=".." Output specified text instead of default completion banner
#
# --cross-compile-prefix Add specified prefix to binutils components.
#
# For developers: keep it sorted alphabetically
my @disablables = (
- "acvp_tests",
+ "acvp-tests",
"afalgeng",
"aria",
"asan",
"dynamic-engine",
"ec",
"ec2m",
+ "ec_nistp_64_gcc_128",
"ecdh",
"ecdsa",
- "ec_nistp_64_gcc_128",
"egd",
"engine",
"err",
"filenames",
"fips",
"fips-securitychecks",
- "fuzz-libfuzzer",
"fuzz-afl",
+ "fuzz-libfuzzer",
"gost",
"idea",
"ktls",
"msan",
"multiblock",
"nextprotoneg",
- "pinshared",
"ocb",
"ocsp",
"padlockeng",
"pic",
+ "pinshared",
"poly1305",
"posix-io",
"psk",
"ui-console",
"unit-test",
"uplink",
- "whirlpool",
"weak-ssl-ciphers",
+ "whirlpool",
"zlib",
"zlib-dynamic",
);
# All of the following are disabled by default:
our %disabled = ( # "what" => "comment"
+ "fips" => "default",
+ "acvp-tests" => "default",
"asan" => "default",
"buildtest-c++" => "default",
"crypto-mdebug" => "default",
"ec_nistp_64_gcc_128" => "default",
"egd" => "default",
"external-tests" => "default",
- "fuzz-libfuzzer" => "default",
"fuzz-afl" => "default",
+ "fuzz-libfuzzer" => "default",
+ "ktls" => "default",
"md2" => "default",
"msan" => "default",
"rc5" => "default",
"weak-ssl-ciphers" => "default",
"zlib" => "default",
"zlib-dynamic" => "default",
- "ktls" => "default",
);
# Note: => pair form used for aesthetics, not to truly make a hash table
"hw" => [ "padlockeng" ],
# no-autoalginit is only useful when building non-shared
- "autoalginit" => [ "shared", "apps" ],
+ "autoalginit" => [ "shared", "apps", "fips" ],
"stdio" => [ "apps", "capieng", "egd" ],
"apps" => [ "tests" ],
"cmp" => [ "crmf" ],
+ "fips" => [ "fips-securitychecks" ],
+
"deprecated-3.0" => [ "engine", "srp" ]
);
die "FIPS key too long (64 bytes max)\n"
if length $1 > 64;
}
+ elsif (/^--banner=(.*)$/)
+ {
+ $banner = $1 . "\n";
+ }
elsif (/^--cross-compile-prefix=(.*)$/)
{
$user{CROSS_COMPILE}=$1;
# Check for makedepend capabilities.
if (!$disabled{makedepend}) {
- if ($config{target} =~ /^(VC|vms)-/) {
- # For VC- and vms- targets, there's nothing more to do here. The
- # functionality is hard coded in the corresponding build files for
- # cl (Windows) and CC/DECC (VMS).
+ # If the attribute makedep_scheme is defined, then we assume that the
+ # config target and its associated build file are programmed to deal
+ # with it.
+ # If makedep_scheme is undefined, we go looking for GCC compatible
+ # dependency making, and if that's not available, we try to fall back
+ # on 'makedepend'.
+ if ($target{makedep_scheme}) {
+ $config{makedep_scheme} = $target{makedep_scheme};
+ # If the makedepcmd attribute is defined, copy it. If not, the
+ # build files will have to fend for themselves.
+ $config{makedepcmd} = $target{makedepcmd} if $target{makedepcmd};
} elsif (($predefined_C{__GNUC__} // -1) >= 3
&& !($predefined_C{__APPLE_CC__} && !$predefined_C{__clang__})) {
# We know that GNU C version 3 and up as well as all clang
# versions support dependency generation, but Xcode did not
# handle $cc -M before clang support (but claims __GNUC__ = 3)
- $config{makedepprog} = "\$(CROSS_COMPILE)$config{CC}";
+ $config{makedep_scheme} = 'gcc';
} else {
- # In all other cases, we look for 'makedepend', and disable the
- # capability if not found.
- $config{makedepprog} = which('makedepend');
- disable('unavailable', 'makedepend') unless $config{makedepprog};
+ # In all other cases, we look for 'makedepend', and set the
+ # makedep_scheme value if we found it.
+ $config{makedepcmd} = which('makedepend');
+ $config{makedep_scheme} = 'makedepend' if $config{makedepcmd};
}
+
+ # If no depend scheme is set, we disable makedepend
+ disable('unavailable', 'makedepend') unless $config{makedep_scheme};
}
if (!$disabled{asm} && !$predefined_C{__MACH__} && $^O ne 'VMS') {
}
foreach (@{$depends{$dest}}) {
my $d = cleanfile($sourced, $_, $blddir);
+ my $d2 = cleanfile($buildd, $_, $blddir);
# If we know it's generated, or assume it is because we can't
# find it in the source tree, we set file we depend on to be
# in the build tree rather than the source tree.
if ($d eq $src_configdata
- || (grep { $d eq $_ }
- map { cleanfile($srcdir, $_, $blddir) }
- grep { /\.h$/ } keys %{$unified_info{generate}})
+ || (grep { $d2 eq $_ }
+ keys %{$unified_info{generate}})
|| ! -f $d) {
- $d = cleanfile($buildd, $_, $blddir);
+ $d = $d2;
}
$unified_info{depends}->{$ddest}->{$d} = 1;
you have tried with a current version of OpenSSL).
EOF
-print <<"EOF";
-
-**********************************************************************
-*** ***
-*** OpenSSL has been successfully configured ***
-*** ***
-*** If you encounter a problem while building, please open an ***
-*** issue on GitHub <https://github.com/openssl/openssl/issues> ***
-*** and include the output from the following command: ***
-*** ***
-*** perl configdata.pm --dump ***
-*** ***
-*** (If you are new to OpenSSL, you might want to consult the ***
-*** 'Troubleshooting' section in the INSTALL.md file first) ***
-*** ***
-**********************************************************************
-EOF
+print $banner;
exit(0);