VMS: compensate for command line length limits with a logical name

Sometimes, you might end up with a rather long compile line due to
excessively long /INCLUDE directories.  Compensate for it by making
a temporary logical name with them and using said logical name as
/INCLUDE argument.

A note was added to NOTES.VMS regarding these limitations.

Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
Richard Levitte 2016-03-23 19:27:08 +01:00
parent 921de151d2
commit b54e35f6cd
2 changed files with 28 additions and 8 deletions

View file

@ -448,12 +448,19 @@ EOF
my $srcs =
join(", ",
map { abs2rel(rel2abs($_), rel2abs($forward)) } @{$args{srcs}});
my $incs =
"/INCLUDE=(".join(",",
map {
my $incs_on = "\@ !";
my $incs_off = "\@ !";
my $incs = "";
if (@{$args{incs}}) {
$incs_on =
"DEFINE tmp_includes "
.join(",-\n\t\t\t", map {
file_name_is_absolute($_)
? $_ : catdir($backward,$_)
} @{$args{incs}}).")";
} @{$args{incs}});
$incs_off = "DEASSIGN tmp_includes";
$incs = " /INCLUDE=(tmp_includes:)";
}
my $before = $unified_info{before}->{$obj.".OBJ"} || "\@ !";
my $after = $unified_info{after}->{$obj.".OBJ"} || "\@ !";
my $depbuild = $disabled{makedepend} ? ""
@ -463,7 +470,9 @@ EOF
$obj.OBJ : $deps
${before}
SET DEFAULT $forward
$incs_on
\$(CC) \$(CFLAGS)${incs}${depbuild} /OBJECT=${objd}${objn}.OBJ /REPOSITORY=$backward $srcs
$incs_off
SET DEFAULT $backward
${after}
\@ PIPE ( \$(PERL) -e "use File::Compare qw/compare_text/; my \$x = compare_text(""$obj.MMS"",""$obj.tmp-MMS""); exit(0x10000000 + (\$x == 0));" || -

View file

@ -5,8 +5,8 @@
Requirement details
-------------------
In addition to the requirements listed in INSTALL, these are required
as well:
In addition to the requirements and instructions listed in INSTALL,
this are required as well:
* At least ODS-5 disk organization for source and build.
Installation can be done on any existing disk organization.
@ -22,6 +22,17 @@
a different ANSI C compiler may require some work.
About MMS and DCL
-----------------
MMS has certain limitations when it comes to line length, and DCL has
certain limitations when it comes to total command length. We do
what we can to mitigate, but there is the possibility that it's not
enough. Should you run into issues, a very simple solution is to set
yourself up a few logical names for the directory trees you're going
to use.
Checking the distribution
-------------------------