From 3c4e250eafd789bb8ff905cd2ec9dddc7e1656d2 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Fri, 18 Nov 2022 07:44:04 +0100 Subject: [PATCH] Fix more VMS inclusions Including things in ../ssl/record/methods from sources in test/ presented another challenge for the current VMS C. This is compensated for with the usual whack-a-mole in Configurations/descrip.mms.tmpl. Reviewed-by: Hugo Landau Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/19708) --- Configurations/descrip.mms.tmpl | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index 6b30db8766f4b..85a3c778b7dc0 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -209,12 +209,12 @@ @cnf_ldflags, '$(LDFLAGS)'); our $bin_ex_libs = join('', @cnf_ex_libs, '$(EX_LIBS)'); - # This is a horrible hack, but is needed because recursive inclusion of files - # in different directories does not work well with VMS C. We try to help by - # specifying extra relative directories. They must always be in Unix format, - # relative to the directory where the .c file is located. The logic is that - # any inclusion, merged with one of these relative directories, will find the - # requested inclusion file. + # These are horrible hacks, but are needed because recursive inclusion of + # files in different directories does not work well with VMS C. We try to + # help by specifying extra relative directories. They must always be in Unix + # format, relative to the directory where the .c file is located. The logic + # is that any inclusion, merged with one of these relative directories, will + # find the requested inclusion file. foreach (grep /\[\.crypto\.async\.arch\].*\.o$/, keys %{$unified_info{sources}}) { my $obj = platform->obj($_); push @{$unified_info{includes_extra}->{$obj}}, qw(../); @@ -255,6 +255,13 @@ foreach (grep /\[\.test\].*?\.o$/, keys %{$unified_info{sources}}) { my $obj = platform->obj($_); push @{$unified_info{includes_extra}->{$obj}}, qw(../ssl ./helpers); + # Some of the sources in [.test] also include headers like + # "../ssl/record/methods/recmethod_local.h", which in turn might include + # "../../ssl_local.h", so these object files need yet another hack. + # We could make this specific to just the object files that are affected + # directly, but that would end up with more whack-a-mole of this sort, so + # nah, we do it broadly. + push @{$unified_info{includes_extra}->{$obj}}, qw(../ssl/record/methods); } foreach (grep /\[\.test\.helpers\].*?\.o$/, keys %{$unified_info{sources}}) { my $obj = platform->obj($_);