1$! BUILD.COM -- Building procedure for the RSAref engine
2$
3$	if f$search("source.dir") .eqs. "" -
4	   .or. f$search("install.dir") .eqs. ""
5$	then
6$	    write sys$error "RSAref 2.0 hasn't been properly extracted."
7$	    exit
8$	endif
9$
10$	if (f$getsyi("cpu").lt.128)
11$	then
12$	    arch := vax
13$	else
14$	    arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
15$	    if (arch .eqs. "") then arch = "UNK"
16$	endif
17$
18$	_save_default = f$environment("default")
19$	set default [.install]
20$	files := desc,digit,md2c,md5c,nn,prime,-
21		rsa,r_encode,r_dh,r_enhanc,r_keygen,r_random,-
22		r_stdlib
23$	delete rsaref.olb;*
24$	library/create/object rsaref.olb
25$	files_i = 0
26$ rsaref_loop:
27$	files_e = f$edit(f$element(files_i,",",files),"trim")
28$	files_i = files_i + 1
29$	if files_e .eqs. "," then goto rsaref_loop_end
30$	cc/include=([-.source],[])/define=PROTOTYPES=1/object=[]'files_e'.obj -
31		[-.source]'files_e'.c
32$	library/replace/object rsaref.olb 'files_e'.obj
33$	goto rsaref_loop
34$ rsaref_loop_end:
35$
36$	set default [-]
37$	define/user openssl [---.include.openssl]
38$	cc/define=ENGINE_DYNAMIC_SUPPORT rsaref.c
39$
40$	if arch .eqs. "VAX"
41$	then
42$	    macro/object=rsaref_vec.obj sys$input:
43;
44; Transfer vector for VAX shareable image
45;
46	.TITLE librsaref
47;
48; Define macro to assist in building transfer vector entries.  Each entry
49; should take no more than 8 bytes.
50;
51	.MACRO FTRANSFER_ENTRY routine
52	.ALIGN QUAD
53	.TRANSFER routine
54	.MASK	routine
55	JMP	routine+2
56	.ENDM FTRANSFER_ENTRY
57;
58; Place entries in own program section.
59;
60	.PSECT $$LIBRSAREF,QUAD,PIC,USR,CON,REL,LCL,SHR,EXE,RD,NOWRT
61
62LIBRSAREF_xfer:
63	FTRANSFER_ENTRY bind_engine
64	FTRANSFER_ENTRY v_check
65
66;
67; Allocate extra storage at end of vector to allow for expansion.
68;
69	.BLKB 512-<.-LIBRSAREF_xfer>	; 1 page.
70	.END
71$	    link/share=librsaref.exe sys$input:/option
72!
73! Ensure transfer vector is at beginning of image
74!
75CLUSTER=FIRST
76COLLECT=FIRST,$$LIBRSAREF
77!
78! make psects nonshareable so image can be installed.
79!
80PSECT_ATTR=$CHAR_STRING_CONSTANTS,NOWRT
81[]rsaref_vec.obj
82[]rsaref.obj
83[.install]rsaref.olb/lib
84[---.vax.exe.crypto]libcrypto.olb/lib
85$	else
86$	    if arch_name .eqs. "ALPHA"
87$	    then
88$		link/share=librsaref.exe sys$input:/option
89[]rsaref.obj
90[.install]rsaref.olb/lib
91[---.alpha.exe.crypto]libcrypto.olb/lib
92symbol_vector=(bind_engine=procedure,v_check=procedure)
93$	    else
94$		if arch_name .eqs. "IA64"
95$		then
96$		    link /shareable=librsaref.exe sys$input: /options
97[]rsaref.obj
98[.install]rsaref.olb/lib
99[---.ia64.exe.crypto]libcrypto.olb/lib
100symbol_vector=(bind_engine=procedure,v_check=procedure)
101$		endif
102$	    endif
103$	endif
104$
105$	set default '_save_default'
106