The branch OpenSSL_1_1_1-stable has been updated via 0342e42d864b7a670b4403389df057c4da6d7975 (commit) via 3dee23a6840add98798260e5faa76205e77120a5 (commit) via d1d0598b7ffcb3f56962ec3cb4c2c2cb8679042f (commit) via ed8a604958484e19408775fa20aa973638875330 (commit) via cd7dc67c4460947b6139cd08bc23a84e3d8bb429 (commit) from dbb1340314fcec37662d79720e6566fdd5a232e8 (commit)
- Log ----------------------------------------------------------------- commit 0342e42d864b7a670b4403389df057c4da6d7975 Author: Richard Levitte <levi...@openssl.org> Date: Tue Feb 26 23:18:02 2019 +0100 Configure: support a few more "make variables" defaulting from env CFLAGS, CXXFLAGS, CPPFLAGS, LDFLAGS, and LDLIBS (cherry picked from commit 8e7984e5783877c58cddc7b4e668401580ab4467) Reviewed-by: Paul Dale <paul.d...@oracle.com> (Merged from https://github.com/openssl/openssl/pull/8359) commit 3dee23a6840add98798260e5faa76205e77120a5 Author: Richard Levitte <levi...@openssl.org> Date: Tue Feb 26 09:34:00 2019 +0100 .travis.yml: change -std=c89 to -ansi For C, -ansi is equivalent to -std=c90 For C++, -ansi is equivalent to -std=c++98 We also place -ansi in CPPFLAGS instead of the usual command line config, to avoid getting it when linking (clang complains) (cherry picked from commit 874f785988c17991051d36a0407a87b36c463a94) Reviewed-by: Paul Dale <paul.d...@oracle.com> (Merged from https://github.com/openssl/openssl/pull/8359) commit d1d0598b7ffcb3f56962ec3cb4c2c2cb8679042f Author: Richard Levitte <levi...@openssl.org> Date: Tue Feb 26 09:32:52 2019 +0100 Configuration: divide devteam flags into language specific sets Some of the devteam flags are not for C++ (cherry picked from commit e373c70a3e535b560f6b6bade914a724aa975c55) Reviewed-by: Paul Dale <paul.d...@oracle.com> (Merged from https://github.com/openssl/openssl/pull/8359) commit ed8a604958484e19408775fa20aa973638875330 Author: Richard Levitte <levi...@openssl.org> Date: Mon Feb 25 11:43:00 2019 +0100 Do buildtests on our public header files with C++ as well This ensures that we don't mistakenly use C++ keywords anywhere public. Related to #8313 (cherry picked from commit 9f27d4bf32c0465270e1922365b21825a0f7a42a) Reviewed-by: Paul Dale <paul.d...@oracle.com> (Merged from https://github.com/openssl/openssl/pull/8359) commit cd7dc67c4460947b6139cd08bc23a84e3d8bb429 Author: Richard Levitte <levi...@openssl.org> Date: Thu Feb 14 16:26:40 2019 +0100 Configure: make --strict-warnings a regular user provided compiler option This makes `--strict-warnings` into a compiler pseudo-option, i.e. it gets treated the same way as any other compiler option given on the configuration command line, but is retroactively replaced by actual compiler warning options, depending on what compiler is used. This makes it easier to see in what order options are given to the compiler from the configuration command line, i.e. this: ./config -Wall --strict-warnings would give the compiler flags in the same order as they're given, i.e.: -Wall -Werror -Wno-whatever ... instead of what we got previously: -Werror -Wno-whatever ... -Wall (cherry picked from commit fcee53948b7f9a5951d42f4ee321e706ea6b4b84) Reviewed-by: Paul Dale <paul.d...@oracle.com> (Merged from https://github.com/openssl/openssl/pull/8359) ----------------------------------------------------------------------- Summary of changes: .travis.yml | 2 +- Configurations/90-team.norelease.conf | 10 ++- Configure | 131 +++++++++++++++++++--------------- test/build.info | 16 +++-- 4 files changed, 95 insertions(+), 64 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0124368..3184308 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,7 @@ compiler: env: - CONFIG_OPTS="" DESTDIR="_install" - CONFIG_OPTS="no-asm -Werror --debug no-afalgeng no-shared enable-crypto-mdebug enable-rc5 enable-md2" - - CONFIG_OPTS="no-asm no-makedepend --strict-warnings -std=c89 -D_DEFAULT_SOURCE" BUILDONLY="yes" CHECKDOCS="yes" GENERATE="yes" + - CONFIG_OPTS="no-asm no-makedepend --strict-warnings -D_DEFAULT_SOURCE" BUILDONLY="yes" CHECKDOCS="yes" GENERATE="yes" CPPFLAGS="-ansi" matrix: include: diff --git a/Configurations/90-team.norelease.conf b/Configurations/90-team.norelease.conf index a9ab98d..45f1811 100644 --- a/Configurations/90-team.norelease.conf +++ b/Configurations/90-team.norelease.conf @@ -18,7 +18,8 @@ my %targets = ( "debug-erbridge" => { inherit_from => [ 'BASE_unix', "x86_64_asm" ], cc => "gcc", - cflags => combine("$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -m64 -DL_ENDIAN -DTERMIO -g", + cflags => combine(join(' ', @{$gcc_devteam_warn{CFLAGS}}), + "-DBN_DEBUG -DCONF_DEBUG -m64 -DL_ENDIAN -DTERMIO -g", threads("-D_REENTRANT")), ex_libs => add(" ","-ldl"), bn_ops => "SIXTY_FOUR_BIT_LONG", @@ -82,7 +83,8 @@ my %targets = ( "debug-test-64-clang" => { inherit_from => [ 'BASE_unix', "x86_64_asm" ], cc => "clang", - cflags => combine("$gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", + cflags => combine(join(' ', @{$gcc_devteam_warn{CFLAGS}}), + "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", threads("${BSDthreads}")), bn_ops => "SIXTY_FOUR_BIT_LONG", thread_scheme => "pthreads", @@ -95,7 +97,9 @@ my %targets = ( "darwin64-debug-test-64-clang" => { inherit_from => [ 'BASE_unix', "x86_64_asm" ], cc => "clang", - cflags => combine("-arch x86_64 -DL_ENDIAN $gcc_devteam_warn -Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", + cflags => combine("-arch x86_64 -DL_ENDIAN", + join(' ', @{$gcc_devteam_warn{CFLAGS}}), + "-Wno-error=overlength-strings -Wno-error=extended-offsetof -Wno-error=language-extension-token -Wno-error=unused-const-variable -Wstrict-overflow -Qunused-arguments -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O3 -pipe", threads("${BSDthreads}")), sys_id => "MACOSX", bn_ops => "SIXTY_FOUR_BIT_LONG", diff --git a/Configure b/Configure index 65aa110..6ef6415 100755 --- a/Configure +++ b/Configure @@ -119,22 +119,27 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lx # code, so we just tell compiler to be pedantic about everything # but 'long long' type. -my $gcc_devteam_warn = "-DDEBUG_UNUSED" - . " -DPEDANTIC -pedantic -Wno-long-long" - . " -Wall" - . " -Wextra" - . " -Wno-unused-parameter" - . " -Wno-missing-field-initializers" - . " -Wswitch" - . " -Wsign-compare" - . " -Wmissing-prototypes" - . " -Wstrict-prototypes" - . " -Wshadow" - . " -Wformat" - . " -Wtype-limits" - . " -Wundef" - . " -Werror" - ; +my %gcc_devteam_warn = (); +{ + my @common = qw( -DDEBUG_UNUSED + -DPEDANTIC -pedantic -Wno-long-long + -Wall + -Wextra + -Wno-unused-parameter + -Wno-missing-field-initializers + -Wswitch + -Wsign-compare + -Wshadow + -Wformat + -Wtype-limits + -Wundef + -Werror ); + %gcc_devteam_warn = ( + CFLAGS => [ @common, qw( -Wmissing-prototypes + -Wstrict-prototypes ) ], + CXXFLAGS => [ @common ] + ); +} # These are used in addition to $gcc_devteam_warn when the compiler is clang. # TODO(openssl-team): fix problems and investigate if (at least) the @@ -144,16 +149,20 @@ my $gcc_devteam_warn = "-DDEBUG_UNUSED" # -Wlanguage-extension-token -- no, we use asm() # -Wunused-macros -- no, too tricky for BN and _XOPEN_SOURCE etc # -Wextended-offsetof -- no, needed in CMS ASN1 code -my $clang_devteam_warn = "" - . " -Wswitch-default" - . " -Wno-parentheses-equality" - . " -Wno-language-extension-token" - . " -Wno-extended-offsetof" - . " -Wconditional-uninitialized" - . " -Wincompatible-pointer-types-discards-qualifiers" - . " -Wmissing-variable-declarations" - . " -Wno-unknown-warning-option" - ; +my %clang_devteam_warn = (); +{ + my @common = qw( -Wswitch-default + -Wno-parentheses-equality + -Wno-language-extension-token + -Wno-extended-offsetof + -Wconditional-uninitialized + -Wincompatible-pointer-types-discards-qualifiers + -Wno-unknown-warning-option ); + %clang_devteam_warn = ( + CFLAGS => [ @common, qw( -Wmissing-variable-declarations ) ], + CXXFLAGS => [ @common ] + ); +} # This adds backtrace information to the memory leak info. Is only used # when crypto-mdebug-backtrace is enabled. @@ -541,18 +550,18 @@ my %user = ( AS => undef, ASFLAGS => [], CC => env('CC'), - CFLAGS => [], + CFLAGS => [ env('CFLAGS') || () ], CXX => env('CXX'), - CXXFLAGS => [], + CXXFLAGS => [ env('CXXFLAGS') || () ], CPP => undef, - CPPFLAGS => [], # -D, -I, -Wp, + CPPFLAGS => [ env('CPPFLAGS') || () ], # -D, -I, -Wp, CPPDEFINES => [], # Alternative for -D CPPINCLUDES => [], # Alternative for -I CROSS_COMPILE => env('CROSS_COMPILE'), HASHBANGPERL=> env('HASHBANGPERL') || env('PERL'), LD => undef, - LDFLAGS => [], # -L, -Wl, - LDLIBS => [], # -l + LDFLAGS => [ env('LDFLAGS') || () ], # -L, -Wl, + LDLIBS => [ env('LDLIBS') || () ], # -l MT => undef, MTFLAGS => [], PERL => env('PERL') || ($^O ne "VMS" ? $^X : "perl"), @@ -747,7 +756,11 @@ while (@argvcopy) } elsif (/^--strict-warnings$/) { - $strict_warnings = 1; + # Pretend that our strict flags is a C flag, and replace it + # with the proper flags later on + push @{$useradd{CFLAGS}}, '--ossl-strict-warnings'; + push @{$useradd{CXXFLAGS}}, '--ossl-strict-warnings'; + $strict_warnings=1; } elsif (/^--debug$/) { @@ -1426,7 +1439,10 @@ unless ($disabled{asm}) { } } -my %predefined = compiler_predefined($config{CROSS_COMPILE}.$config{CC}); +my %predefined_C = compiler_predefined($config{CROSS_COMPILE}.$config{CC}); +my %predefined_CXX = $config{CXX} + ? compiler_predefined($config{CROSS_COMPILE}.$config{CXX}) + : (); # Check for makedepend capabilities. if (!$disabled{makedepend}) { @@ -1434,8 +1450,8 @@ if (!$disabled{makedepend}) { # 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). - } elsif (($predefined{__GNUC__} // -1) >= 3 - && !($predefined{__APPLE_CC__} && !$predefined{__clang__})) { + } 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) @@ -1448,9 +1464,9 @@ if (!$disabled{makedepend}) { } } -if (!$disabled{asm} && !$predefined{__MACH__} && $^O ne 'VMS') { +if (!$disabled{asm} && !$predefined_C{__MACH__} && $^O ne 'VMS') { # probe for -Wa,--noexecstack option... - if ($predefined{__clang__}) { + if ($predefined_C{__clang__}) { # clang has builtin assembler, which doesn't recognize --help, # but it apparently recognizes the option in question on all # supported platforms even when it's meaningless. In other words @@ -1510,33 +1526,36 @@ if (defined($config{api})) { push @{$config{defines}}, $apiflag; } +my %strict_warnings_collection=( CFLAGS => [], CXXFLAGS => []); if ($strict_warnings) { my $wopt; - my $gccver = $predefined{__GNUC__} // -1; + my $gccver = $predefined_C{__GNUC__} // -1; + my $gxxver = $predefined_CXX{__GNUC__} // -1; - die "ERROR --strict-warnings requires gcc[>=4] or gcc-alike" + warn "WARNING --strict-warnings requires gcc[>=4] or gcc-alike" unless $gccver >= 4; - foreach $wopt (split /\s+/, $gcc_devteam_warn) - { - push @{$config{cflags}}, $wopt - unless grep { $_ eq $wopt } @{$config{cflags}}; - push @{$config{cxxflags}}, $wopt - if ($config{CXX} - && !grep { $_ eq $wopt } @{$config{cxxflags}}); - } - if (defined($predefined{__clang__})) + warn "WARNING --strict-warnings requires g++[>=4] or g++-alike" + unless $gxxver >= 4; + foreach (qw(CFLAGS CXXFLAGS)) { - foreach $wopt (split /\s+/, $clang_devteam_warn) - { - push @{$config{cflags}}, $wopt - unless grep { $_ eq $wopt } @{$config{cflags}}; - push @{$config{cxxflags}}, $wopt - if ($config{CXX} - && !grep { $_ eq $wopt } @{$config{cxxflags}}); - } + push @{$strict_warnings_collection{$_}}, + @{$gcc_devteam_warn{$_}}; } + push @{$strict_warnings_collection{CFLAGS}}, + @{$clang_devteam_warn{CFLAGS}} + if (defined($predefined_C{__clang__})); + push @{$strict_warnings_collection{CXXFLAGS}}, + @{$clang_devteam_warn{CXXFLAGS}} + if (defined($predefined_CXX{__clang__})); } +foreach my $idx (qw(CFLAGS CXXFLAGS)) + { + $useradd{$idx} = [ map { $_ eq '--ossl-strict-warnings' + ? @{$strict_warnings_collection{$idx}} + : ( $_ ) } + @{$useradd{$idx}} ]; + } unless ($disabled{"crypto-mdebug-backtrace"}) { diff --git a/test/build.info b/test/build.info index 52d4ee7..22a7d19 100644 --- a/test/build.info +++ b/test/build.info @@ -579,11 +579,19 @@ ENDIF next if grep { lc("$name.h") =~ m/$_/i } @nogo_headers_re; $OUT .= <<"_____"; - PROGRAMS_NO_INST=buildtest_$name + PROGRAMS_NO_INST=buildtest_c_$name + SOURCE[buildtest_c_$name]=buildtest_$name.c GENERATE[buildtest_$name.c]=generate_buildtest.pl $name - SOURCE[buildtest_$name]=buildtest_$name.c - INCLUDE[buildtest_$name]=../include - DEPEND[buildtest_$name]=../libssl ../libcrypto + INCLUDE[buildtest_c_$name]=../include + DEPEND[buildtest_c_$name]=../libssl ../libcrypto +_____ + $OUT .= <<"_____" if $config{CXX}; + + PROGRAMS_NO_INST=buildtest_cc_$name + SOURCE[buildtest_cc_$name]=buildtest_$name.cc + GENERATE[buildtest_$name.cc]=generate_buildtest.pl $name + INCLUDE[buildtest_cc_$name]=../include + DEPEND[buildtest_cc_$name]=../libssl ../libcrypto _____ } -}