unified build scheme: add a "unified" template for VMS descrip.mms
As part of this, change util/mkdef.pl to stop adding libraries to
depend on in its output. mkdef.pl should ONLY output a symbol
vector.
Because symbol names can't be longer than 31 characters, we use the
compiler to shorten those that are longer down to 23 characters plus
an 8 character CRC. To make sure users of our header files will pick
up on that automatically, add the DEC C supported extra headers files
__decc_include_prologue.h and __decc_include_epilogue.h.
Furthermore, we add a config.com, so VMS people can configure just as
comfortably as any Unix folks, thusly:
@config
Reviewed-by: Rich Salz <rsalz@openssl.org>
diff --git a/util/mkdef.pl b/util/mkdef.pl
index ff68d86..aa85ec8 100755
--- a/util/mkdef.pl
+++ b/util/mkdef.pl
@@ -1225,12 +1225,8 @@
}
elsif ($VMS)
{
- my $libref = $name eq "ssl" ? "LIBCRYPTO.EXE /SHARE" : "";
print OUT <<"EOF";
-IDENTIFICATION="V$version"
CASE_SENSITIVE=YES
-LIB$libname.OLB /LIBRARY
-$libref
SYMBOL_VECTOR=(-
EOF
$symvtextcount = 16; # length of "SYMBOL_VECTOR=(-"
@@ -1297,34 +1293,35 @@
print OUT " $s2;\n";
} elsif ($VMS) {
while(++$prevnum < $n) {
- my $symline="SPARE, SPARE -";
- if ($symvtextcount + length($symline) + 1 > 1024) {
+ my $symline=" ,SPARE -\n ,SPARE -\n";
+ if ($symvtextcount + length($symline) - 2 > 1024) {
print OUT ")\nSYMBOL_VECTOR=(-\n";
$symvtextcount = 16; # length of "SYMBOL_VECTOR=(-"
}
- if ($symvtextcount > 16) {
- $symline = ",".$symline;
+ if ($symvtextcount == 16) {
+ # Take away first comma
+ $symline =~ s/,//;
}
- print OUT " $symline\n";
- $symvtextcount += length($symline);
+ print OUT $symline;
+ $symvtextcount += length($symline) - 2;
}
(my $s_uc = $s) =~ tr/a-z/A-Z/;
my $symtype=
$v ? "DATA" : "PROCEDURE";
my $symline=
($s_uc ne $s
- ? "$s_uc/$s=$symtype, $s=$symtype"
- : "$s=$symtype, SPARE")
- ." -";
- if ($symvtextcount + length($symline) + 1 > 1024) {
+ ? " ,$s_uc/$s=$symtype -\n ,$s=$symtype -\n"
+ : " ,$s=$symtype -\n ,SPARE -\n");
+ if ($symvtextcount + length($symline) - 2 > 1024) {
print OUT ")\nSYMBOL_VECTOR=(-\n";
$symvtextcount = 16; # length of "SYMBOL_VECTOR=(-"
}
- if ($symvtextcount > 16) {
- $symline = ",".$symline;
+ if ($symvtextcount == 16) {
+ # Take away first comma
+ $symline =~ s/,//;
}
- print OUT " $symline\n";
- $symvtextcount += length($symline);
+ print OUT $symline;
+ $symvtextcount += length($symline) - 2;
} elsif($v && !$OS2) {
printf OUT " %s%-39s @%-8d DATA\n",
($W32)?"":"_",$s2,$n;