xref: /netbsd-src/crypto/external/bsd/openssl/dist/NOTES-VMS.md (revision 4170684f22077e3779c5c14826430de0dec964b2)
1b0d17251SchristosNotes for the OpenVMS platform
2b0d17251Schristos==============================
3b0d17251Schristos
4b0d17251Schristos - [Requirement details](#requirement-details)
5b0d17251Schristos - [About ANSI C compiler](#about-ansi-c-compiler)
6b0d17251Schristos - [About ODS-5 directory names and Perl](#about-ods-5-directory-names-and-perl)
7b0d17251Schristos - [About MMS and DCL](#about-mms-and-dcl)
8b0d17251Schristos - [About debugging](#about-debugging)
9b0d17251Schristos - [Checking the distribution](#checking-the-distribution)
10b0d17251Schristos
11b0d17251SchristosRequirement details
12b0d17251Schristos-------------------
13b0d17251Schristos
14b0d17251SchristosIn addition to the requirements and instructions listed
15b0d17251Schristosin [INSTALL.md](INSTALL.md), this are required as well:
16b0d17251Schristos
17b0d17251Schristos  * At least ODS-5 disk organization for source and build.
18b0d17251Schristos    Installation can be done on any existing disk organization.
19b0d17251Schristos
20b0d17251SchristosAbout ANSI C compiler
21b0d17251Schristos---------------------
22b0d17251Schristos
23b0d17251SchristosAn ANSI C compiled is needed among other things.  This means that
24b0d17251SchristosVAX C is not and will not be supported.
25b0d17251Schristos
26b0d17251SchristosWe have only tested with DEC C (aka HP VMS C / VSI C) and require
27b0d17251Schristosversion 7.1 or later.  Compiling with a different ANSI C compiler may
28b0d17251Schristosrequire some work.
29b0d17251Schristos
30b0d17251SchristosPlease avoid using C RTL feature logical names `DECC$*` when building
31b0d17251Schristosand testing OpenSSL.  Most of all, they can be disruptive when
32b0d17251Schristosrunning the tests, as they affect the Perl interpreter.
33b0d17251Schristos
34b0d17251SchristosAbout ODS-5 directory names and Perl
35b0d17251Schristos------------------------------------
36b0d17251Schristos
37b0d17251SchristosIt seems that the perl function canonpath() in the `File::Spec` module
38b0d17251Schristosdoesn't treat file specifications where the last directory name
39b0d17251Schristoscontains periods very well.  Unfortunately, some versions of VMS tar
40b0d17251Schristoswill keep the periods in the OpenSSL source directory instead of
41b0d17251Schristosconverting them to underscore, thereby leaving your source in
42b0d17251Schristossomething like `[.openssl-1^.1^.0]`.  This will lead to issues when
43b0d17251Schristosconfiguring and building OpenSSL.
44b0d17251Schristos
45b0d17251SchristosWe have no replacement for Perl's canonpath(), so the best workaround
46b0d17251Schristosfor now is to rename the OpenSSL source directory, as follows (please
47b0d17251Schristosadjust for the actual source directory name you have):
48b0d17251Schristos
49b0d17251Schristos    $ rename openssl-1^.1^.0.DIR openssl-1_1_0.DIR
50b0d17251Schristos
51b0d17251SchristosAbout MMS and DCL
52b0d17251Schristos-----------------
53b0d17251Schristos
54b0d17251SchristosMMS has certain limitations when it comes to line length, and DCL has
55b0d17251Schristoscertain limitations when it comes to total command length.  We do
56b0d17251Schristoswhat we can to mitigate, but there is the possibility that it's not
57b0d17251Schristosenough.  Should you run into issues, a very simple solution is to set
58b0d17251Schristosyourself up a few logical names for the directory trees you're going
59b0d17251Schristosto use.
60b0d17251Schristos
61b0d17251SchristosAbout debugging
62b0d17251Schristos---------------
63b0d17251Schristos
64b0d17251SchristosIf you build for debugging, the default on VMS is that image
65b0d17251Schristosactivation starts the debugger automatically, giving you a debug
66b0d17251Schristosprompt.  Unfortunately, this disrupts all other uses, such as running
67b0d17251Schristostest programs in the test framework.
68b0d17251Schristos
69b0d17251SchristosGenerally speaking, if you build for debugging, only use the programs
70b0d17251Schristosdirectly for debugging.  Do not try to use them from a script, such
71b0d17251Schristosas running the test suite.
72b0d17251Schristos
73b0d17251Schristos### The following is not available on Alpha
74b0d17251Schristos
75b0d17251SchristosAs a compromise, we're turning off the flag that makes the debugger
76b0d17251Schristosstart automatically.  If there is a program that you need to debug,
77b0d17251Schristosyou need to turn that flag back on first, for example:
78b0d17251Schristos
79b0d17251Schristos    $ set image /flag=call_debug [.test]evp_test.exe
80b0d17251Schristos
81b0d17251SchristosThen just run it and you will find yourself in a debugging session.
82b0d17251SchristosWhen done, we recommend that you turn that flag back off:
83b0d17251Schristos
84b0d17251Schristos    $ set image /flag=nocall_debug [.test]evp_test.exe
85b0d17251Schristos
86*4170684fSchristosAbout assembler acceleration
87*4170684fSchristos----------------------------
88*4170684fSchristos
89*4170684fSchristosOpenSSL has assembler acceleration for a number of BIGNUM and crypto
90*4170684fSchristosroutines.  The VMS config targets tries to look for a selection of
91*4170684fSchristosassemblers and will use what they find.  If none of the assemblers are
92*4170684fSchristosfound, OpenSSL will be built as if `no-asm` was configured.
93*4170684fSchristos
94*4170684fSchristos### For Itanium / IA64 / I64
95*4170684fSchristos
96*4170684fSchristos-   There is only one assembler, a port of Intel's `ias`, found in the
97*4170684fSchristos    HP Open Source Tools CD, available through [DECUSlib](http://www.decuslib.com).
98*4170684fSchristos    It's assumed to be set up as per the instructions, where `disk` and
99*4170684fSchristos    `dir` are expected to be adapted to local conditions:
100*4170684fSchristos
101*4170684fSchristos        $ ias :== $disk:[dir]iasi64.exe
102*4170684fSchristos
103b0d17251SchristosChecking the distribution
104b0d17251Schristos-------------------------
105b0d17251Schristos
106b0d17251SchristosThere have been reports of places where the distribution didn't quite
107b0d17251Schristosget through, for example if you've copied the tree from a NFS-mounted
108b0d17251SchristosUnix mount point.
109b0d17251Schristos
110b0d17251SchristosThe easiest way to check if everything got through as it should is to
111b0d17251Schristoscheck that this file exists:
112b0d17251Schristos
113b0d17251Schristos    [.include.openssl]configuration^.h.in
114b0d17251Schristos
115b0d17251SchristosThe best way to get a correct distribution is to download the gzipped
116b0d17251Schristostar file from ftp://ftp.openssl.org/source/, use `GZIP -d` to uncompress
117b0d17251Schristosit and `VMSTAR` to unpack the resulting tar file.
118b0d17251Schristos
119b0d17251SchristosGzip and VMSTAR are available here:
120b0d17251Schristos
121b0d17251Schristos   <http://antinode.info/dec/index.html#Software>
122b0d17251Schristos
123b0d17251SchristosShould you need it, you can find UnZip for VMS here:
124b0d17251Schristos
125b0d17251Schristos   <http://www.info-zip.org/UnZip.html>
126b0d17251Schristos
127b0d17251Schristos How the value of 'arch' is determined
128b0d17251Schristos -------------------------------------
129b0d17251Schristos
130b0d17251Schristos 'arch' is mentioned in INSTALL.  It's value is determined like this:
131b0d17251Schristos
132b0d17251Schristos    arch = f$edit( f$getsyi( "arch_name"), "upcase")
133