summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGES8
-rwxr-xr-xConfigure6
-rw-r--r--INSTALL13
-rw-r--r--test/build.info2
-rw-r--r--test/certs/root-ed25519.privkey.pem3
-rw-r--r--test/certs/root-ed25519.pubkey.pem3
6 files changed, 32 insertions, 3 deletions
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-----