1$!
2$! Startup file for OpenSSL 1.x.
3$!
4$! 2011-03-05 SMS.
5$!
6$! This procedure must reside in the OpenSSL installation directory.
7$! It will fail if it is copied to a different location.
8$!
9$! P1  qualifier(s) for DEFINE.  For example, "/SYSTEM" to get the
10$!     logical names defined in the system logical name table.
11$!
12$! P2  "64", to use executables which were built with 64-bit pointers.
13$!
14$! Good (default) and bad status values.
15$!
16$ status =    %x00010001 ! RMS$_NORMAL, normal successful completion.
17$ rms_e_fnf = %x00018292 ! RMS$_FNF, file not found.
18$!
19$! Prepare for problems.
20$!
21$ orig_dev_dir = f$environment( "DEFAULT")
22$ on control_y then goto clean_up
23$ on error then goto clean_up
24$!
25$! Determine hardware architecture.
26$!
27$ if (f$getsyi( "cpu") .lt. 128)
28$ then
29$   arch_name = "VAX"
30$ else
31$   arch_name = f$edit( f$getsyi( "arch_name"), "upcase")
32$   if (arch_name .eqs. "") then arch_name = "UNK"
33$ endif
34$!
35$ if (p2 .eqs. "64")
36$ then
37$   arch_name_exe = arch_name+ "_64"
38$ else
39$   arch_name_exe = arch_name
40$ endif
41$!
42$! Derive the OpenSSL installation device:[directory] from the location
43$! of this command procedure.
44$!
45$ proc = f$environment( "procedure")
46$ proc_dev_dir = f$parse( "A.;", proc, , , "no_conceal") - "A.;"
47$ proc_dev = f$parse( proc_dev_dir, , , "device", "syntax_only")
48$ proc_dir = f$parse( proc_dev_dir, , , "directory", "syntax_only") - -
49   ".][000000"- "[000000."- "]["- "["- "]"
50$ proc_dev_dir = proc_dev+ "["+ proc_dir+ "]"
51$ set default 'proc_dev_dir'
52$ set default [-]
53$ ossl_dev_dir = f$environment( "default")
54$!
55$! Check existence of expected directories (to see if this procedure has
56$! been moved away from its proper place).
57$!
58$ if ((f$search( "certs.dir;1") .eqs. "") .or. -
59   (f$search( "include.dir;1") .eqs. "") .or. -
60   (f$search( "private.dir;1") .eqs. "") .or. -
61   (f$search( "vms.dir;1") .eqs. ""))
62$ then
63$    write sys$output -
64      "   Can't find expected common OpenSSL directories in:"
65$    write sys$output "   ''ossl_dev_dir'"
66$    status = rms_e_fnf
67$    goto clean_up
68$ endif
69$!
70$ if ((f$search( "''arch_name_exe'_exe.dir;1") .eqs. "") .or. -
71   (f$search( "''arch_name'_lib.dir;1") .eqs. ""))
72$ then
73$    write sys$output -
74      "   Can't find expected architecture-specific OpenSSL directories in:"
75$    write sys$output "   ''ossl_dev_dir'"
76$    status = rms_e_fnf
77$    goto clean_up
78$ endif
79$!
80$! All seems well (enough).  Define the OpenSSL logical names.
81$!
82$ ossl_root = ossl_dev_dir- "]"+ ".]"
83$ define /translation_attributes = concealed /nolog'p1 SSLROOT 'ossl_root'
84$ define /nolog 'p1' SSLCERTS     sslroot:[certs]
85$ define /nolog 'p1' SSLINCLUDE   sslroot:[include]
86$ define /nolog 'p1' SSLPRIVATE   sslroot:[private]
87$ define /nolog 'p1' SSLEXE       sslroot:['arch_name_exe'_exe]
88$ define /nolog 'p1' SSLLIB       sslroot:['arch_name'_lib]
89$!
90$! Defining OPENSSL lets a C program use "#include <openssl/{foo}.h>":
91$ define /nolog 'p1' OPENSSL      SSLINCLUDE:
92$!
93$! Run a site-specific procedure, if it exists.
94$!
95$ if f$search( "sslroot:[vms]openssl_systartup.com") .nes."" then -
96   @ sslroot:[vms]openssl_systartup.com
97$!
98$! Restore the original default dev:[dir] (if known).
99$!
100$ clean_up:
101$!
102$ if (f$type( orig_dev_dir) .nes. "")
103$ then
104$    set default 'orig_dev_dir'
105$ endif
106$!
107$ EXIT 'status'
108$!
109