From ac4033d658e4dc210ed4552b88069b57532ba3d7 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Thu, 28 Feb 2019 13:28:43 +0100 Subject: [PATCH] Configure: make C++ build tests optional and configurable Disabled by default Fixes #8360 Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8370) --- CHANGES | 8 ++++++++ Configure | 6 ++++-- INSTALL | 13 +++++++++++++ test/build.info | 2 +- test/certs/root-ed25519.privkey.pem | 3 +++ test/certs/root-ed25519.pubkey.pem | 3 +++ 6 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 test/certs/root-ed25519.privkey.pem create mode 100644 test/certs/root-ed25519.pubkey.pem diff --git a/CHANGES b/CHANGES index 5fcf667736..ff61ff4383 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,14 @@ Changes between 1.1.1 and 3.0.0 [xx XXX xxxx] + *) Added build tests for C++. These are generated files that only do one + thing, to include one public OpenSSL head file each. This tests that + the public header files can be usefully included in a C++ application. + + This test isn't enabled by default. It can be enabled with the option + 'enable-buildtest-c++'. + [Richard Levitte] + *) Added property based algorithm implementation selection framework to the core. [Paul Dale] diff --git a/Configure b/Configure index 0c9037b313..707e8b923b 100755 --- a/Configure +++ b/Configure @@ -341,6 +341,7 @@ my @disablables = ( "autoload-config", "bf", "blake2", + "buildtest-c++", "camellia", "capieng", "cast", @@ -444,6 +445,7 @@ my %deprecated_disablables = ( our %disabled = ( # "what" => "comment" "asan" => "default", + "buildtest-c++" => "default", "crypto-mdebug" => "default", "crypto-mdebug-backtrace" => "default", "devcryptoeng" => "default", @@ -1208,8 +1210,8 @@ foreach my $what (sort keys %disabled) { $config{options} .= " no-$what"; - if (!grep { $what eq $_ } ( 'dso', 'threads', 'shared', 'pic', - 'dynamic-engine', 'makedepend', + if (!grep { $what eq $_ } ( 'buildtest-c++', 'dso', 'threads', 'shared', + 'pic', 'dynamic-engine', 'makedepend', 'zlib-dynamic', 'zlib', 'sse2' )) { (my $WHAT = uc $what) =~ s|-|_|g; my $skipdir = $what; diff --git a/INSTALL b/INSTALL index be0ce9d3b7..99d0463e4b 100644 --- a/INSTALL +++ b/INSTALL @@ -296,6 +296,19 @@ Typically OpenSSL will automatically load a system config file which configures default ssl options. + enable-buildtest-c++ + While testing, generate C++ buildtest files that + simply check that the public OpenSSL header files + are usable standalone with C++. + + Enabling this option demands extra care. For any + compiler flag given directly as configuration + option, you must ensure that it's valid for both + the C and the C++ compiler. If not, the C++ build + test will most likely break. As an alternative, + you can use the language specific variables, CFLAGS + and CXXFLAGS. + no-capieng Don't build the CAPI engine. This option will be forced if on a platform that does not support CAPI. diff --git a/test/build.info b/test/build.info index 372f9be9d6..5bf6fd0cb0 100644 --- a/test/build.info +++ b/test/build.info @@ -602,7 +602,7 @@ ENDIF INCLUDE[buildtest_c_$name]=../include DEPEND[buildtest_c_$name]=../libssl ../libcrypto _____ - $OUT .= <<"_____" if $config{CXX}; + $OUT .= <<"_____" if $config{CXX} && !$disabled{"buildtest-c++"}; PROGRAMS{noinst}=buildtest_cc_$name SOURCE[buildtest_cc_$name]=buildtest_$name.cc diff --git a/test/certs/root-ed25519.privkey.pem b/test/certs/root-ed25519.privkey.pem new file mode 100644 index 0000000000..e447080ae2 --- /dev/null +++ b/test/certs/root-ed25519.privkey.pem @@ -0,0 +1,3 @@ +-----BEGIN PRIVATE KEY----- +MC4CAQAwBQYDK2VwBCIEINTuctv5E1hK1bbY8fdp+K06/nwoy/HU++CXqI9EdVhC +-----END PRIVATE KEY----- diff --git a/test/certs/root-ed25519.pubkey.pem b/test/certs/root-ed25519.pubkey.pem new file mode 100644 index 0000000000..41b0218e94 --- /dev/null +++ b/test/certs/root-ed25519.pubkey.pem @@ -0,0 +1,3 @@ +-----BEGIN PUBLIC KEY----- +MCowBQYDK2VwAyEAGb9ECWmEzf6FQbrBZ9w7lshQhqowtrbLDFw4rXAxZuE= +-----END PUBLIC KEY-----