]> git.ipfire.org Git - thirdparty/openssl.git/blame - crypto/crypto-lib.com
Add a general user interface API. This is designed to replace things
[thirdparty/openssl.git] / crypto / crypto-lib.com
CommitLineData
7d7d2cbc
UM
1$!
2$! CRYPTO-LIB.COM
3$! Written By: Robert Byer
4$! Vice-President
5$! A-Com Computing, Inc.
6$! byer@mail.all-net.net
7$!
8$! Changes by Richard Levitte <richard@levitte.org>
9$!
10$! This command files compiles and creates the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB"
11$! library for OpenSSL. The "xxx" denotes the machine architecture of AXP
12$! or VAX.
13$!
14$! It was re-written so it would try to determine what "C" compiler to use
15$! or you can specify which "C" compiler to use.
16$!
f18a93ab
RL
17$! Specify the following as P1 to build just that part or ALL to just
18$! build everything.
19$!
20$! LIBRARY To just compile the [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
21$! APPS To just compile the [.xxx.EXE.CRYPTO]*.EXE
22$! ALL To do both LIBRARY and APPS
23$!
24$! Specify RSAREF as P2 to compile with the RSAREF library instead of
7d7d2cbc
UM
25$! the regular one. If you specify NORSAREF it will compile with the
26$! regular RSAREF routines. (Note: If you are in the United States
27$! you MUST compile with RSAREF unless you have a license from RSA).
28$!
29$! Note: The RSAREF libraries are NOT INCLUDED and you have to
30$! download it from "ftp://ftp.rsa.com/rsaref". You have to
31$! get the ".tar-Z" file as the ".zip" file dosen't have the
32$! directory structure stored. You have to extract the file
33$! into the [.RSAREF] directory under the root directory as that
34$! is where the scripts will look for the files.
35$!
f18a93ab 36$! Specify DEBUG or NODEBUG as P3 to compile with or without debugger
7d7d2cbc
UM
37$! information.
38$!
f18a93ab 39$! Specify which compiler at P4 to try to compile under.
7d7d2cbc
UM
40$!
41$! VAXC For VAX C.
42$! DECC For DEC C.
43$! GNUC For GNU C.
44$!
45$! If you don't speficy a compiler, it will try to determine which
46$! "C" compiler to use.
47$!
f18a93ab 48$! P5, if defined, sets a TCP/IP library to use, through one of the following
7d7d2cbc
UM
49$! keywords:
50$!
51$! UCX for UCX
52$! SOCKETSHR for SOCKETSHR+NETLIB
53$!
f18a93ab 54$! P6, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
7d7d2cbc 55$!
f18a93ab 56$! P7, if defined, sets a choice of crypto methods to compile.
7d7d2cbc
UM
57$! WARNING: this should only be done to recompile some part of an already
58$! fully compiled library.
59$!
60$!
61$! Define A TCP/IP Library That We Will Need To Link To.
62$! (That Is, If We Need To Link To One.)
63$!
64$ TCPIP_LIB = ""
65$!
66$! Check Which Architecture We Are Using.
67$!
68$ IF (F$GETSYI("CPU").GE.128)
69$ THEN
70$!
71$! The Architecture Is AXP
72$!
73$ ARCH := AXP
74$!
75$! Else...
76$!
77$ ELSE
78$!
79$! The Architecture Is VAX.
80$!
81$ ARCH := VAX
82$!
83$! End The Architecture Check.
84$!
85$ ENDIF
86$!
87$! Define The Different Encryption Types.
88$!
d03e0f34 89$ ENCRYPT_TYPES = "Basic,MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,"+ -
7d7d2cbc 90 "DES,RC2,RC4,RC5,IDEA,BF,CAST,"+ -
9bd35f63 91 "BN,EC,RSA,DSA,DH,DSO,ENGINE,RIJNDAEL,"+ -
7d7d2cbc
UM
92 "BUFFER,BIO,STACK,LHASH,RAND,ERR,OBJECTS,"+ -
93 "EVP,EVP_2,ASN1,ASN1_2,PEM,X509,X509V3,"+ -
a63d5eaa 94 "CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI"
f18a93ab 95$ ENCRYPT_PROGRAMS = "DES,PKCS7"
7d7d2cbc
UM
96$!
97$! Check To Make Sure We Have Valid Command Line Parameters.
98$!
99$ GOSUB CHECK_OPTIONS
100$!
101$! Initialise logical names and such
102$!
103$ GOSUB INITIALISE
104$!
105$! Tell The User What Kind of Machine We Run On.
106$!
107$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
108$!
109$! Define The OBJ Directory.
110$!
111$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.CRYPTO]
112$!
113$! Check To See If The Architecture Specific OBJ Directory Exists.
114$!
115$ IF (F$PARSE(OBJ_DIR).EQS."")
116$ THEN
117$!
118$! It Dosen't Exist, So Create It.
119$!
120$ CREATE/DIR 'OBJ_DIR'
121$!
122$! End The Architecture Specific OBJ Directory Check.
123$!
124$ ENDIF
125$!
126$! Define The EXE Directory.
127$!
128$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]
129$!
130$! Check To See If The Architecture Specific Directory Exists.
131$!
132$ IF (F$PARSE(EXE_DIR).EQS."")
133$ THEN
134$!
135$! It Dosen't Exist, So Create It.
136$!
137$ CREATE/DIRECTORY 'EXE_DIR'
138$!
139$! End The Architecture Specific Directory Check.
140$!
141$ ENDIF
142$!
143$! Define The Library Name.
144$!
145$ LIB_NAME := 'EXE_DIR'LIBCRYPTO.OLB
146$!
f18a93ab
RL
147$! Define The CRYPTO-LIB We Are To Use.
148$!
149$ CRYPTO_LIB := 'EXE_DIR'LIBCRYPTO.OLB
150$!
151$! Define The RSAREF-LIB We Are To Use.
152$!
153$ RSAREF_LIB := SYS$DISK:[-.'ARCH'.EXE.RSAREF]LIBRSAGLUE.OLB
154$!
7d7d2cbc
UM
155$! Check To See If We Already Have A "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" Library...
156$!
157$ IF (F$SEARCH(LIB_NAME).EQS."")
158$ THEN
159$!
160$! Guess Not, Create The Library.
161$!
162$ LIBRARY/CREATE/OBJECT 'LIB_NAME'
163$!
164$! End The Library Check.
165$!
166$ ENDIF
167$!
f18a93ab
RL
168$! Build our options file for the application
169$!
170$ GOSUB CHECK_OPT_FILE
171$!
7d7d2cbc
UM
172$! Define The Different Encryption "library" Strings.
173$!
f18a93ab
RL
174$ APPS_DES = "DES/DES,CBC3_ENC"
175$ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE"
176$
b36c170d 177$ LIB_ = "cryptlib,mem,mem_dbg,cversion,ex_data,tmdiff,cpt_err,ebcdic,uid"
7d7d2cbc 178$ LIB_MD2 = "md2_dgst,md2_one"
d03e0f34 179$ LIB_MD4 = "md4_dgst,md4_one"
7d7d2cbc
UM
180$ LIB_MD5 = "md5_dgst,md5_one"
181$ LIB_SHA = "sha_dgst,sha1dgst,sha_one,sha1_one"
182$ LIB_MDC2 = "mdc2dgst,mdc2_one"
183$ LIB_HMAC = "hmac"
184$ LIB_RIPEMD = "rmd_dgst,rmd_one"
185$ LIB_DES = "set_key,ecb_enc,cbc_enc,"+ -
186 "ecb3_enc,cfb64enc,cfb64ede,cfb_enc,ofb64ede,"+ -
187 "enc_read,enc_writ,ofb64enc,"+ -
188 "ofb_enc,str2key,pcbc_enc,qud_cksm,rand_key,"+ -
189 "des_enc,fcrypt_b,read2pwd,"+ -
ea823552 190 "fcrypt,xcbc_enc,read_pwd,rpc_enc,cbc_cksm,ede_cbcm_enc"
7d7d2cbc
UM
191$ LIB_RC2 = "rc2_ecb,rc2_skey,rc2_cbc,rc2cfb64,rc2ofb64"
192$ LIB_RC4 = "rc4_skey,rc4_enc"
193$ LIB_RC5 = "rc5_skey,rc5_ecb,rc5_enc,rc5cfb64,rc5ofb64"
194$ LIB_IDEA = "i_cbc,i_cfb64,i_ofb64,i_ecb,i_skey"
195$ LIB_BF = "bf_skey,bf_ecb,bf_enc,bf_cfb64,bf_ofb64"
196$ LIB_CAST = "c_skey,c_ecb,c_enc,c_cfb64,c_ofb64"
197$ LIB_BN_ASM = "[.asm]vms.mar,vms-helper"
26c77508 198$ IF F$TRNLNM("OPENSSL_NO_ASM").OR.ARCH.EQS."AXP" THEN LIB_BN_ASM = "bn_asm"
66a0def8 199$ LIB_BN = "bn_add,bn_div,bn_exp,bn_lib,bn_ctx,bn_mul,bn_mod,"+ -
7d7d2cbc 200 "bn_print,bn_rand,bn_shift,bn_word,bn_blind,"+ -
66a0def8
RL
201 "bn_kron,bn_sqrt,bn_gcd,bn_prime,bn_err,bn_sqr,"+LIB_BN_ASM+","+ -
202 "bn_recp,bn_mont,bn_mpi,bn_exp2"
7d7d2cbc 203$ LIB_RSA = "rsa_eay,rsa_gen,rsa_lib,rsa_sign,rsa_saos,rsa_err,"+ -
66a0def8
RL
204 "rsa_pk1,rsa_ssl,rsa_none,rsa_oaep,rsa_chk,rsa_null,"+ -
205 "rsa_asn1"
e0a9ba9c
RL
206$ LIB_EC = "ec_lib,ecp_smpl,ecp_mont,ecp_recp,ecp_nist,ec_cvt,ec_mult,"+ -
207 "ec_err"
f18a93ab 208$ LIB_DSA = "dsa_gen,dsa_key,dsa_lib,dsa_asn1,dsa_vrf,dsa_sign,dsa_err,dsa_ossl"
66a0def8 209$ LIB_DH = "dh_asn1,dh_gen,dh_key,dh_lib,dh_check,dh_err"
5ce0e07d
RL
210$ LIB_DSO = "dso_dl,dso_dlfcn,dso_err,dso_lib,dso_null,"+ -
211 "dso_openssl,dso_win32,dso_vms"
01412ec6 212$ LIB_ENGINE = "engine_err,engine_lib,engine_list,engine_all,engine_openssl,"+ -
66a0def8 213 "hw_atalla,hw_cswift,hw_ncipher,hw_nuron,hw_ubsec"
01412ec6 214$ LIB_RIJNDAEL = "rd_fst"
7d7d2cbc
UM
215$ LIB_BUFFER = "buffer,buf_err"
216$ LIB_BIO = "bio_lib,bio_cb,bio_err,"+ -
217 "bss_mem,bss_null,bss_fd,"+ -
218 "bss_file,bss_sock,bss_conn,"+ -
219 "bf_null,bf_buff,b_print,b_dump,"+ -
645749ef
RL
220 "b_sock,bss_acpt,bf_nbio,bss_rtcp,bss_bio,bss_log,"+ -
221 "bf_lbuf"
7d7d2cbc
UM
222$ LIB_STACK = "stack"
223$ LIB_LHASH = "lhash,lh_stats"
601140b3
RL
224$ LIB_RAND = "md_rand,randfile,rand_lib,rand_err,rand_egd,"+ -
225 "rand_vms"
7d7d2cbc
UM
226$ LIB_ERR = "err,err_all,err_prn"
227$ LIB_OBJECTS = "o_names,obj_dat,obj_lib,obj_err"
228$ LIB_EVP = "encode,digest,evp_enc,evp_key,"+ -
4b88270b 229 "e_des,e_bf,e_idea,e_des3,"+ -
cf1b7d96 230 "e_rc4,e_aes,names,"+ -
0baed24c 231 "e_xcbc_d,e_rc2,e_cast,e_rc5"
eec79f9b
RL
232$ LIB_EVP_2 = "m_null,m_md2,m_md4,m_md5,m_sha,m_sha1," + -
233 "m_dss,m_dss1,m_mdc2,m_ripemd,"+ -
7d7d2cbc
UM
234 "p_open,p_seal,p_sign,p_verify,p_lib,p_enc,p_dec,"+ -
235 "bio_md,bio_b64,bio_enc,evp_err,e_null,"+ -
88886fd3
RL
236 "c_all,c_allc,c_alld,evp_lib,bio_ok,"+-
237 "evp_pkey,evp_pbe,p5_crpt,p5_crpt2"
7d7d2cbc 238$ LIB_ASN1 = "a_object,a_bitstr,a_utctm,a_gentm,a_time,a_int,a_octet,"+ -
66a0def8
RL
239 "a_print,a_type,a_set,a_dup,a_d2i_fp,a_i2d_fp,"+ -
240 "a_enum,a_utf8,a_sign,a_digest,a_verify,a_mbstr,a_strex,"+ -
241 "x_algor,x_val,x_pubkey,x_sig,x_req,x_attrib,x_bignum,"+ -
6525ced5 242 "x_long,x_name,x_x509,x_x509a,x_crl,x_info,x_spki,nsseq,"+ -
7d7d2cbc 243 "d2i_pu,d2i_pr,i2d_pu,i2d_pr"
d593983d 244$ LIB_ASN1_2 = "t_req,t_x509,t_x509a,t_crl,t_pkey,t_spki,t_bitst,"+ -
6525ced5 245 "tasn_new,tasn_fre,tasn_enc,tasn_dec,tasn_utl,tasn_typ,"+ -
66a0def8 246 "f_int,f_string,n_pkey,"+ -
7d7d2cbc 247 "f_enum,a_hdr,x_pkey,a_bool,x_exten,"+ -
f18a93ab 248 "asn1_par,asn1_lib,asn1_err,a_meth,a_bytes,a_strnid,"+ -
7d7d2cbc
UM
249 "evp_asn1,asn_pack,p5_pbe,p5_pbev2,p8_pkey"
250$ LIB_PEM = "pem_sign,pem_seal,pem_info,pem_lib,pem_all,pem_err"
251$ LIB_X509 = "x509_def,x509_d2,x509_r2x,x509_cmp,"+ -
f18a93ab 252 "x509_obj,x509_req,x509spki,x509_vfy,"+ -
7d7d2cbc 253 "x509_set,x509rset,x509_err,"+ -
d593983d 254 "x509name,x509_v3,x509_ext,x509_att,"+ -
7d7d2cbc 255 "x509type,x509_lu,x_all,x509_txt,"+ -
74ecf9e2 256 "x509_trs,by_file,by_dir"
7d7d2cbc
UM
257$ LIB_X509V3 = "v3_bcons,v3_bitst,v3_conf,v3_extku,v3_ia5,v3_lib,"+ -
258 "v3_prn,v3_utl,v3err,v3_genn,v3_alt,v3_skey,v3_akey,v3_pku,"+ -
66a0def8
RL
259 "v3_int,v3_enum,v3_sxnet,v3_cpols,v3_crld,v3_purp,v3_info,"+ -
260 "v3_ocsp"
4b88270b 261$ LIB_CONF = "conf_err,conf_lib,conf_api,conf_def"
7d7d2cbc 262$ LIB_TXT_DB = "txt_db"
66a0def8
RL
263$ LIB_PKCS7 = "pk7_asn1,pk7_lib,pkcs7err,pk7_doit,pk7_smime,pk7_attr,"+ -
264 "pk7_mime"
265$ LIB_PKCS12 = "p12_add,p12_asn,p12_attr,p12_crpt,p12_crt,p12_decr,"+ -
266 "p12_init,p12_key,p12_kiss,p12_mutl,"+ -
267 "p12_utl,p12_npas,pk12err"
7d7d2cbc
UM
268$ LIB_COMP = "comp_lib,"+ -
269 "c_rle,c_zlib"
cf1b7d96 270$ LIB_OCSP = "ocsp_asn,ocsp_ext,ocsp_ht,ocsp_lib,ocsp_cl,"+ -
0cd58667 271 "ocsp_srv,ocsp_prn,ocsp_vfy,ocsp_err"
a63d5eaa
RL
272$ LIB_UI_COMPAT = "ui_compat"
273$ LIB_UI = "ui_er,ui_lib,ui_openssl,"+LIB_UI_COMPAT
7d7d2cbc
UM
274$!
275$! Setup exceptional compilations
276$!
277$ COMPILEWITH_CC3 = ",bss_rtcp,"
5241a83b 278$ COMPILEWITH_CC4 = ",a_utctm,bss_log,"
d03e0f34
RL
279$ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + -
280 "sha_dgst,sha1dgst,rmd_dgst,bf_enc,"
7d7d2cbc
UM
281$!
282$! Check To See If We Are Going To Use RSAREF.
283$!
f18a93ab
RL
284$ IF (RSAREF.EQS."TRUE" .AND. ENCRYPT_TYPES - "RSA".NES.ENCRYPT_TYPES -
285 .AND. (BUILDALL .EQS. "TRUE" .OR. BUILDALL .EQS. "LIBRARY"))
7d7d2cbc
UM
286$ THEN
287$!
288$! Check To See If The File [-.RSAREF]RSAREF.C Is Actually There.
289$!
290$ IF (F$SEARCH("SYS$DISK:[-.RSAREF]RSAREF.C").EQS."")
291$ THEN
292$!
0baed24c 293$! Tell The User That The File Doesn't Exist.
7d7d2cbc
UM
294$!
295$ WRITE SYS$OUTPUT ""
0baed24c 296$ WRITE SYS$OUTPUT "The File [-.RSAREF]RSAREF.C Doesn't Exist."
7d7d2cbc
UM
297$ WRITE SYS$OUTPUT ""
298$!
299$! Exit The Build.
300$!
301$ GOTO EXIT
302$!
303$! End The [-.RSAREF]RSAREF.C Check.
304$!
305$ ENDIF
306$!
307$! Tell The User We Are Compiling The [-.RSAREF]RSAREF File.
308$!
309$ WRITE SYS$OUTPUT "Compiling The [-.RSAREF]RSAREF File."
310$!
311$! Compile [-.RSAREF]RSAREF.C
312$!
313$ CC/OBJECT='OBJ_DIR'RSAREF.OBJ SYS$DISK:[-.RSAREF]RSAREF.C
314$!
315$! Add It To The Library.
316$!
317$ LIBRARY/REPLACE 'LIB_NAME' 'OBJ_DIR'RSAREF.OBJ
318$!
319$! Delete The Object File.
320$!
321$ DELETE 'OBJ_DIR'RSAREF.OBJ;*
322$!
323$! Check To See If The File [-.RSAREF]RSAR_ERR.C Is Actually There.
324$!
325$ IF (F$SEARCH("SYS$DISK:[-.RSAREF]RSAR_ERR.C").EQS."")
326$ THEN
327$!
0baed24c 328$! Tell The User That The File Doesn't Exist.
7d7d2cbc
UM
329$!
330$ WRITE SYS$OUTPUT ""
0baed24c 331$ WRITE SYS$OUTPUT "The File [-.RSAREF]RSAR_ERR.C Doesn't Exist."
7d7d2cbc
UM
332$ WRITE SYS$OUTPUT ""
333$!
334$! Exit The Build.
335$!
336$ GOTO EXIT
337$!
338$! End The [-.RSAREF]RSAR_ERR.C File Check.
339$!
340$ ENDIF
341$!
342$! Tell The User We Are Compiling The [-.RSAREF]RSAR_ERR File.
343$!
344$ WRITE SYS$OUTPUT "Compiling The [-.RSAREF]RSAR_ERR File."
345$!
346$! Compile [-.RSAREF]RSAR_ERR.C
347$!
348$ CC/OBJECT='OBJ_DIR'RSAR_ERR.OBJ SYS$DISK:[-.RSAREF]RSAR_ERR.C
349$!
350$! Add It To The Library.
351$!
352$ LIBRARY/REPLACE 'LIB_NAME' 'OBJ_DIR'RSAR_ERR.OBJ
353$!
354$! Delete The Object File.
355$!
356$ DELETE 'OBJ_DIR'RSAR_ERR.OBJ;*
357$!
358$! End The RSAREF Check.
359$!
360$ ENDIF
361$!
362$! Figure Out What Other Modules We Are To Build.
363$!
364$ BUILD_SET:
365$!
366$! Define A Module Counter.
367$!
368$ MODULE_COUNTER = 0
369$!
370$! Top Of The Loop.
371$!
372$ MODULE_NEXT:
373$!
374$! Extract The Module Name From The Encryption List.
375$!
376$ MODULE_NAME = F$ELEMENT(MODULE_COUNTER,",",ENCRYPT_TYPES)
26975577 377$ IF MODULE_NAME.EQS."Basic" THEN MODULE_NAME = ""
f18a93ab 378$ MODULE_NAME1 = MODULE_NAME
7d7d2cbc
UM
379$!
380$! Check To See If We Are At The End Of The Module List.
381$!
382$ IF (MODULE_NAME.EQS.",")
383$ THEN
384$!
385$! We Are At The End Of The Module List, Go To MODULE_DONE.
386$!
387$ GOTO MODULE_DONE
388$!
389$! End The Module List Check.
390$!
391$ ENDIF
392$!
393$! Increment The Moudle Counter.
394$!
395$ MODULE_COUNTER = MODULE_COUNTER + 1
396$!
f18a93ab 397$! Create The Library and Apps Module Names.
7d7d2cbc
UM
398$!
399$ LIB_MODULE = "LIB_" + MODULE_NAME
f18a93ab 400$ APPS_MODULE = "APPS_" + MODULE_NAME
7d7d2cbc
UM
401$ IF (MODULE_NAME.EQS."ASN1_2")
402$ THEN
403$ MODULE_NAME = "ASN1"
404$ ENDIF
405$ IF (MODULE_NAME.EQS."EVP_2")
406$ THEN
407$ MODULE_NAME = "EVP"
408$ ENDIF
409$!
f18a93ab
RL
410$! Set state (can be LIB and APPS)
411$!
412$ STATE = "LIB"
413$ IF BUILDALL .EQS. "APPS" THEN STATE = "APPS"
414$!
7d7d2cbc
UM
415$! Check if the library module name actually is defined
416$!
417$ IF F$TYPE('LIB_MODULE') .EQS. ""
418$ THEN
419$ WRITE SYS$ERROR ""
420$ WRITE SYS$ERROR "The module ",MODULE_NAME," does not exist. Continuing..."
421$ WRITE SYS$ERROR ""
422$ GOTO MODULE_NEXT
423$ ENDIF
424$!
f18a93ab
RL
425$! Top Of The Module Loop.
426$!
427$ MODULE_AGAIN:
428$!
429$! Tell The User What Module We Are Building.
430$!
431$ IF (MODULE_NAME1.NES."")
432$ THEN
433$ IF STATE .EQS. "LIB"
434$ THEN
435$ WRITE SYS$OUTPUT "Compiling The ",MODULE_NAME1," Library Files. (",BUILDALL,",",STATE,")"
436$ ELSE IF F$TYPE('APPS_MODULE') .NES. ""
437$ THEN
438$ WRITE SYS$OUTPUT "Compiling The ",MODULE_NAME1," Applications. (",BUILDALL,",",STATE,")"
439$ ENDIF
440$ ENDIF
441$ ENDIF
442$!
443$! Define A File Counter And Set It To "0".
444$!
445$ FILE_COUNTER = 0
446$ APPLICATION = ""
447$ APPLICATION_COUNTER = 0
448$!
7d7d2cbc
UM
449$! Top Of The File Loop.
450$!
451$ NEXT_FILE:
452$!
f18a93ab
RL
453$! Look in the LIB_MODULE is we're in state LIB
454$!
455$ IF STATE .EQS. "LIB"
456$ THEN
457$!
458$! O.K, Extract The File Name From The File List.
459$!
460$ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",'LIB_MODULE')
7d7d2cbc 461$!
f18a93ab
RL
462$! else
463$!
464$ ELSE
465$ FILE_NAME = ","
466$!
467$ IF F$TYPE('APPS_MODULE') .NES. ""
468$ THEN
469$!
470$! Extract The File Name From The File List.
471$! This part is a bit more complicated.
472$!
473$ IF APPLICATION .EQS. ""
474$ THEN
475$ APPLICATION = F$ELEMENT(APPLICATION_COUNTER,";",'APPS_MODULE')
476$ APPLICATION_COUNTER = APPLICATION_COUNTER + 1
477$ APPLICATION_OBJECTS = F$ELEMENT(1,"/",APPLICATION)
478$ APPLICATION = F$ELEMENT(0,"/",APPLICATION)
479$ FILE_COUNTER = 0
480$ ENDIF
481$
482$! WRITE SYS$OUTPUT "DEBUG: SHOW SYMBOL APPLICATION*"
483$! SHOW SYMBOL APPLICATION*
484$!
485$ IF APPLICATION .NES. ";"
486$ THEN
487$ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",APPLICATION_OBJECTS)
488$ IF FILE_NAME .EQS. ","
489$ THEN
490$ APPLICATION = ""
491$ GOTO NEXT_FILE
492$ ENDIF
493$ ENDIF
494$ ENDIF
495$ ENDIF
7d7d2cbc
UM
496$!
497$! Check To See If We Are At The End Of The File List.
498$!
499$ IF (FILE_NAME.EQS.",")
500$ THEN
501$!
f18a93ab 502$! We Are At The End Of The File List, Change State Or Goto FILE_DONE.
7d7d2cbc 503$!
f18a93ab
RL
504$ IF STATE .EQS. "LIB" .AND. BUILDALL .NES. "LIBRARY"
505$ THEN
506$ STATE = "APPS"
507$ GOTO MODULE_AGAIN
508$ ELSE
509$ GOTO FILE_DONE
510$ ENDIF
7d7d2cbc
UM
511$!
512$! End The File List Check.
513$!
514$ ENDIF
515$!
516$! Increment The Counter.
517$!
518$ FILE_COUNTER = FILE_COUNTER + 1
519$!
520$! Create The Source File Name.
521$!
522$ TMP_FILE_NAME = F$ELEMENT(1,"]",FILE_NAME)
523$ IF TMP_FILE_NAME .EQS. "]" THEN TMP_FILE_NAME = FILE_NAME
524$ IF F$ELEMENT(0,".",TMP_FILE_NAME) .EQS. TMP_FILE_NAME THEN -
525 FILE_NAME = FILE_NAME + ".c"
526$ IF (MODULE_NAME.NES."")
527$ THEN
528$ SOURCE_FILE = "SYS$DISK:[." + MODULE_NAME+ "]" + FILE_NAME
529$ ELSE
530$ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME
531$ ENDIF
532$ SOURCE_FILE = SOURCE_FILE - "]["
533$!
534$! Create The Object File Name.
535$!
536$ OBJECT_FILE = OBJ_DIR + F$PARSE(FILE_NAME,,,"NAME","SYNTAX_ONLY") + ".OBJ"
537$ ON WARNING THEN GOTO NEXT_FILE
538$!
539$! Check To See If The File We Want To Compile Is Actually There.
540$!
541$ IF (F$SEARCH(SOURCE_FILE).EQS."")
542$ THEN
543$!
0baed24c 544$! Tell The User That The File Doesn't Exist.
7d7d2cbc
UM
545$!
546$ WRITE SYS$OUTPUT ""
0baed24c 547$ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Doesn't Exist."
7d7d2cbc
UM
548$ WRITE SYS$OUTPUT ""
549$!
550$! Exit The Build.
551$!
552$ GOTO EXIT
553$!
554$! End The File Exist Check.
555$!
556$ ENDIF
557$!
558$! Tell The User We Are Compiling The File.
559$!
560$ IF (MODULE_NAME.EQS."")
561$ THEN
f18a93ab 562$ WRITE SYS$OUTPUT "Compiling The ",FILE_NAME," File. (",BUILDALL,",",STATE,")"
7d7d2cbc
UM
563$ ENDIF
564$ IF (MODULE_NAME.NES."")
565$ THEN
566$ WRITE SYS$OUTPUT " ",FILE_NAME,""
567$ ENDIF
568$!
569$! Compile The File.
570$!
571$ ON ERROR THEN GOTO NEXT_FILE
572$ FILE_NAME0 = F$ELEMENT(0,".",FILE_NAME)
573$ IF FILE_NAME - ".mar" .NES. FILE_NAME
574$ THEN
575$ MACRO/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
576$ ELSE
577$ IF COMPILEWITH_CC3 - FILE_NAME0 .NES. COMPILEWITH_CC3
578$ THEN
579$ CC3/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
580$ ELSE
581$ IF COMPILEWITH_CC4 - FILE_NAME0 .NES. COMPILEWITH_CC4
582$ THEN
583$ CC4/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
584$ ELSE
585$ IF COMPILEWITH_CC5 - FILE_NAME0 .NES. COMPILEWITH_CC5
586$ THEN
587$ CC5/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
588$ ELSE
589$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
590$ ENDIF
591$ ENDIF
592$ ENDIF
593$ ENDIF
f18a93ab
RL
594$ IF STATE .EQS. "LIB"
595$ THEN
7d7d2cbc 596$!
f18a93ab 597$! Add It To The Library.
7d7d2cbc 598$!
f18a93ab 599$ LIBRARY/REPLACE 'LIB_NAME' 'OBJECT_FILE'
7d7d2cbc 600$!
f18a93ab 601$! Time To Clean Up The Object File.
7d7d2cbc 602$!
f18a93ab
RL
603$ DELETE 'OBJECT_FILE';*
604$ ENDIF
7d7d2cbc
UM
605$!
606$! Go Back And Do It Again.
607$!
608$ GOTO NEXT_FILE
609$!
610$! All Done With This Library Part.
611$!
612$ FILE_DONE:
613$!
f18a93ab
RL
614$! Time To Build Some Applications
615$!
616$ IF F$TYPE('APPS_MODULE') .NES. "" .AND. BUILDALL .NES. "LIBRARY"
617$ THEN
618$ APPLICATION_COUNTER = 0
619$ NEXT_APPLICATION:
620$ APPLICATION = F$ELEMENT(APPLICATION_COUNTER,";",'APPS_MODULE')
621$ IF APPLICATION .EQS. ";" THEN GOTO APPLICATION_DONE
622$
623$ APPLICATION_COUNTER = APPLICATION_COUNTER + 1
624$ APPLICATION_OBJECTS = F$ELEMENT(1,"/",APPLICATION)
625$ APPLICATION = F$ELEMENT(0,"/",APPLICATION)
626$
627$! WRITE SYS$OUTPUT "DEBUG: SHOW SYMBOL APPLICATION*"
628$! SHOW SYMBOL APPLICATION*
629$!
630$! Tell the user what happens
631$!
632$ WRITE SYS$OUTPUT " ",APPLICATION,".exe"
633$!
634$! Link The Program, Check To See If We Need To Link With RSAREF Or Not.
635$!
636$ IF (RSAREF.EQS."TRUE")
637$ THEN
638$!
639$! Check To See If We Are To Link With A Specific TCP/IP Library.
640$!
641$ IF (TCPIP_LIB.NES."")
642$ THEN
643$!
644$! Link With The RSAREF Library And A Specific TCP/IP Library.
645$!
646$ LINK/'DEBUGGER'/'TRACEBACK'/EXE='EXE_DIR''APPLICATION'.EXE -
647 'OBJ_DIR''APPLICATION_OBJECTS', -
648 'CRYPTO_LIB'/LIBRARY,'RSAREF_LIB'/LIBRARY, -
649 'TCPIP_LIB','OPT_FILE'/OPTION
650$!
651$! Else...
652$!
653$ ELSE
654$!
655$! Link With The RSAREF Library And NO TCP/IP Library.
656$!
657$ LINK/'DEBUGGER'/'TRACEBACK'/EXE='EXE_DIR''APPLICATION'.EXE -
658 'OBJ_DIR''APPLICATION_OBJECTS', -
659 'CRYPTO_LIB'/LIBRARY,'RSAREF_LIB'/LIBRARY, -
660 'OPT_FILE'/OPTION
661$!
662$! End The TCP/IP Library Check.
663$!
664$ ENDIF
665$!
666$! Else...
667$!
668$ ELSE
669$!
670$! Don't Link With The RSAREF Routines.
671$!
672$!
673$! Check To See If We Are To Link With A Specific TCP/IP Library.
674$!
675$ IF (TCPIP_LIB.NES."")
676$ THEN
677$!
678$! Don't Link With The RSAREF Routines And TCP/IP Library.
679$!
680$ LINK/'DEBUGGER'/'TRACEBACK'/EXE='EXE_DIR''APPLICATION'.EXE -
681 'OBJ_DIR''APPLICATION_OBJECTS', -
682 'CRYPTO_LIB'/LIBRARY, -
683 'TCPIP_LIB','OPT_FILE'/OPTION
684$!
685$! Else...
686$!
687$ ELSE
688$!
689$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
690$!
691$ LINK/'DEBUGGER'/'TRACEBACK'/EXE='EXE_DIR''APPLICATION'.EXE -
692 'OBJ_DIR''APPLICATION_OBJECTS',-
693 'CRYPTO_LIB'/LIBRARY, -
694 'OPT_FILE'/OPTION
695$!
696$! End The TCP/IP Library Check.
697$!
698$ ENDIF
699$!
700$! End The RSAREF Link Check.
701$!
702$ ENDIF
703$ GOTO NEXT_APPLICATION
704$ APPLICATION_DONE:
705$ ENDIF
706$!
7d7d2cbc
UM
707$! Go Back And Get The Next Module.
708$!
709$ GOTO MODULE_NEXT
710$!
711$! All Done With This Module.
712$!
713$ MODULE_DONE:
714$!
715$! Tell The User That We Are All Done.
716$!
717$ WRITE SYS$OUTPUT "All Done..."
718$ EXIT:
719$ GOSUB CLEANUP
720$ EXIT
721$!
722$! Check For The Link Option FIle.
723$!
724$ CHECK_OPT_FILE:
725$!
726$! Check To See If We Need To Make A VAX C Option File.
727$!
728$ IF (COMPILER.EQS."VAXC")
729$ THEN
730$!
731$! Check To See If We Already Have A VAX C Linker Option File.
732$!
733$ IF (F$SEARCH(OPT_FILE).EQS."")
734$ THEN
735$!
736$! We Need A VAX C Linker Option File.
737$!
738$ CREATE 'OPT_FILE'
739$DECK
740!
741! Default System Options File To Link Agianst
742! The Sharable VAX C Runtime Library.
743!
744SYS$SHARE:VAXCRTL.EXE/SHARE
745$EOD
746$!
747$! End The Option File Check.
748$!
749$ ENDIF
750$!
751$! End The VAXC Check.
752$!
753$ ENDIF
754$!
755$! Check To See If We Need A GNU C Option File.
756$!
757$ IF (COMPILER.EQS."GNUC")
758$ THEN
759$!
760$! Check To See If We Already Have A GNU C Linker Option File.
761$!
762$ IF (F$SEARCH(OPT_FILE).EQS."")
763$ THEN
764$!
765$! We Need A GNU C Linker Option File.
766$!
767$ CREATE 'OPT_FILE'
768$DECK
769!
770! Default System Options File To Link Agianst
771! The Sharable C Runtime Library.
772!
773GNU_CC:[000000]GCCLIB/LIBRARY
774SYS$SHARE:VAXCRTL/SHARE
775$EOD
776$!
777$! End The Option File Check.
778$!
779$ ENDIF
780$!
781$! End The GNU C Check.
782$!
783$ ENDIF
784$!
785$! Check To See If We Need A DEC C Option File.
786$!
787$ IF (COMPILER.EQS."DECC")
788$ THEN
789$!
790$! Check To See If We Already Have A DEC C Linker Option File.
791$!
792$ IF (F$SEARCH(OPT_FILE).EQS."")
793$ THEN
794$!
795$! Figure Out If We Need An AXP Or A VAX Linker Option File.
796$!
797$ IF ARCH .EQS. "VAX"
798$ THEN
799$!
800$! We Need A DEC C Linker Option File For VAX.
801$!
802$ CREATE 'OPT_FILE'
803$DECK
804!
805! Default System Options File To Link Agianst
806! The Sharable DEC C Runtime Library.
807!
808SYS$SHARE:DECC$SHR.EXE/SHARE
809$EOD
810$!
811$! Else...
812$!
813$ ELSE
814$!
815$! Create The AXP Linker Option File.
816$!
817$ CREATE 'OPT_FILE'
818$DECK
819!
820! Default System Options File For AXP To Link Agianst
821! The Sharable C Runtime Library.
822!
823SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
824SYS$SHARE:CMA$OPEN_RTL/SHARE
825$EOD
826$!
827$! End The VAX/AXP DEC C Option File Check.
828$!
829$ ENDIF
830$!
831$! End The Option File Search.
832$!
833$ ENDIF
834$!
835$! End The DEC C Check.
836$!
837$ ENDIF
838$!
839$! Tell The User What Linker Option File We Are Using.
840$!
841$ WRITE SYS$OUTPUT "Using Linker Option File ",OPT_FILE,"."
842$!
843$! Time To RETURN.
844$!
845$ RETURN
846$!
29ccd81f
RL
847$! Check The User's Options.
848$!
849$ CHECK_OPTIONS:
850$!
f18a93ab
RL
851$! Check To See If P1 Is Blank.
852$!
853$ IF (P1.EQS."ALL")
854$ THEN
855$!
856$! P1 Is Blank, So Build Everything.
857$!
858$ BUILDALL = "TRUE"
859$!
860$! Else...
861$!
862$ ELSE
863$!
864$! Else, Check To See If P1 Has A Valid Arguement.
865$!
866$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."APPS")
867$ THEN
868$!
869$! A Valid Arguement.
870$!
871$ BUILDALL = P1
872$!
873$! Else...
874$!
875$ ELSE
876$!
877$! Tell The User We Don't Know What They Want.
878$!
879$ WRITE SYS$OUTPUT ""
880$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
881$ WRITE SYS$OUTPUT ""
882$ WRITE SYS$OUTPUT " ALL : Just Build Everything."
883$ WRITE SYS$OUTPUT " LIBRARY : To Compile Just The [.xxx.EXE.SSL]LIBCRYPTO.OLB Library."
884$ WRITE SYS$OUTPUT " APPS : To Compile Just The [.xxx.EXE.SSL]*.EXE Programs."
885$ WRITE SYS$OUTPUT ""
886$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
887$ WRITE SYS$OUTPUT ""
888$ WRITE SYS$OUTPUT " AXP : Alpha Architecture."
889$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
890$ WRITE SYS$OUTPUT ""
891$!
892$! Time To EXIT.
893$!
894$ EXIT
895$!
896$! End The Valid Arguement Check.
897$!
898$ ENDIF
899$!
900$! End The P1 Check.
901$!
902$ ENDIF
903$!
f18a93ab 904$! Check To See If P2 Is Blank.
7d7d2cbc 905$!
ccb9643f 906$ P2 = "NORSAREF"
f18a93ab 907$ IF (P2.EQS."NORSAREF")
7d7d2cbc
UM
908$ THEN
909$!
f18a93ab 910$! P2 Is NORSAREF, So Compile With The Regular RSA Libraries.
7d7d2cbc
UM
911$!
912$ RSAREF = "FALSE"
913$ ELSE
914$!
915$! Check To See If We Are To Use The RSAREF Library.
916$!
f18a93ab 917$ IF (P2.EQS."RSAREF")
7d7d2cbc
UM
918$ THEN
919$!
920$! Check To Make Sure We Have The RSAREF Source Code Directory.
921$!
922$ IF (F$SEARCH("SYS$DISK:[-.RSAREF]SOURCE.DIR").EQS."")
923$ THEN
924$!
925$! We Don't Have The RSAREF Souce Code Directory, So Tell The
926$! User This.
927$!
928$ WRITE SYS$OUTPUT ""
929$ WRITE SYS$OUTPUT "It appears that you don't have the RSAREF Souce Code."
930$ WRITE SYS$OUTPUT "You need to go to 'ftp://ftp.rsa.com/rsaref'. You have to"
0baed24c 931$ WRITE SYS$OUTPUT "get the '.tar-Z' file as the '.zip' file doesn't have the"
7d7d2cbc
UM
932$ WRITE SYS$OUTPUT "directory structure stored. You have to extract the file"
933$ WRITE SYS$OUTPUT "into the [.RSAREF] directory under the root directory"
934$ WRITE SYS$OUTPUT "as that is where the scripts will look for the files."
935$ WRITE SYS$OUTPUT ""
936$!
937$! Time To Exit.
938$!
939$ EXIT
940$!
941$! Else, Compile Using The RSAREF Library.
942$!
943$ ELSE
944$ RSAREF = "TRUE"
945$ ENDIF
946$ ELSE
947$!
948$! They Entered An Invalid Option..
949$!
950$ WRITE SYS$OUTPUT ""
f18a93ab 951$ WRITE SYS$OUTPUT "The Option ",P2," Is Invalid. The Valid Options Are:"
7d7d2cbc
UM
952$ WRITE SYS$OUTPUT ""
953$ WRITE SYS$OUTPUT " RSAREF : Compile With The RSAREF Library."
954$ WRITE SYS$OUTPUT " NORSAREF : Compile With The Regular RSA Library."
955$ WRITE SYS$OUTPUT ""
956$!
957$! Time To EXIT.
958$!
959$ EXIT
960$!
961$! End The Valid Arguement Check.
962$!
963$ ENDIF
964$!
f18a93ab 965$! End The P2 Check.
7d7d2cbc
UM
966$!
967$ ENDIF
968$!
f18a93ab 969$! Check To See If P3 Is Blank.
7d7d2cbc 970$!
f18a93ab 971$ IF (P3.EQS."NODEBUG")
7d7d2cbc
UM
972$ THEN
973$!
f18a93ab 974$! P3 Is NODEBUG, So Compile Without The Debugger Information.
7d7d2cbc
UM
975$!
976$ DEBUGGER = "NODEBUG"
977$ TRACEBACK = "NOTRACEBACK"
978$ GCC_OPTIMIZE = "OPTIMIZE"
979$ CC_OPTIMIZE = "OPTIMIZE"
980$ MACRO_OPTIMIZE = "OPTIMIZE"
981$ WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
982$ WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
983$ ELSE
984$!
985$! Check To See If We Are To Compile With Debugger Information.
986$!
f18a93ab 987$ IF (P3.EQS."DEBUG")
7d7d2cbc
UM
988$ THEN
989$!
990$! Compile With Debugger Information.
991$!
992$ DEBUGGER = "DEBUG"
993$ TRACEBACK = "TRACEBACK"
994$ GCC_OPTIMIZE = "NOOPTIMIZE"
995$ CC_OPTIMIZE = "NOOPTIMIZE"
996$ MACRO_OPTIMIZE = "NOOPTIMIZE"
997$ WRITE SYS$OUTPUT "Debugger Information Will Be Produced During Compile."
998$ WRITE SYS$OUTPUT "Compiling Without Compiler Optimization."
999$ ELSE
1000$!
1001$! They Entered An Invalid Option..
1002$!
1003$ WRITE SYS$OUTPUT ""
f18a93ab 1004$ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:"
7d7d2cbc
UM
1005$ WRITE SYS$OUTPUT ""
1006$ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information."
1007$ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information."
1008$ WRITE SYS$OUTPUT ""
1009$!
1010$! Time To EXIT.
1011$!
1012$ EXIT
1013$!
1014$! End The Valid Arguement Check.
1015$!
1016$ ENDIF
1017$!
f18a93ab 1018$! End The P3 Check.
7d7d2cbc
UM
1019$!
1020$ ENDIF
1021$!
1022$! Special Threads For OpenVMS v7.1 Or Later
1023$!
1024$! Written By: Richard Levitte
1025$! richard@levitte.org
1026$!
1027$!
f18a93ab 1028$! Check To See If We Have A Option For P6.
7d7d2cbc 1029$!
f18a93ab 1030$ IF (P6.EQS."")
7d7d2cbc
UM
1031$ THEN
1032$!
1033$! Get The Version Of VMS We Are Using.
1034$!
1035$ ISSEVEN :=
1036$ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION")))
1037$ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
1038$!
1039$! Check To See If The VMS Version Is v7.1 Or Later.
1040$!
1041$ IF (TMP.GE.71)
1042$ THEN
1043$!
1044$! We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
1045$!
1046$ ISSEVEN := ,PTHREAD_USE_D4
1047$!
1048$! End The VMS Version Check.
1049$!
1050$ ENDIF
1051$!
f18a93ab 1052$! End The P6 Check.
7d7d2cbc
UM
1053$!
1054$ ENDIF
1055$!
f18a93ab 1056$! Check To See If P4 Is Blank.
7d7d2cbc 1057$!
f18a93ab 1058$ IF (P4.EQS."")
7d7d2cbc
UM
1059$ THEN
1060$!
1061$! O.K., The User Didn't Specify A Compiler, Let's Try To
1062$! Find Out Which One To Use.
1063$!
1064$! Check To See If We Have GNU C.
1065$!
1066$ IF (F$TRNLNM("GNU_CC").NES."")
1067$ THEN
1068$!
1069$! Looks Like GNUC, Set To Use GNUC.
1070$!
f18a93ab 1071$ P4 = "GNUC"
7d7d2cbc
UM
1072$!
1073$! Else...
1074$!
1075$ ELSE
1076$!
1077$! Check To See If We Have VAXC Or DECC.
1078$!
1079$ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
1080$ THEN
1081$!
1082$! Looks Like DECC, Set To Use DECC.
1083$!
f18a93ab 1084$ P4 = "DECC"
7d7d2cbc
UM
1085$!
1086$! Else...
1087$!
1088$ ELSE
1089$!
1090$! Looks Like VAXC, Set To Use VAXC.
1091$!
f18a93ab 1092$ P4 = "VAXC"
7d7d2cbc
UM
1093$!
1094$! End The VAXC Compiler Check.
1095$!
1096$ ENDIF
1097$!
1098$! End The DECC & VAXC Compiler Check.
1099$!
1100$ ENDIF
1101$!
1102$! End The Compiler Check.
1103$!
1104$ ENDIF
1105$!
f18a93ab 1106$! Check To See If We Have A Option For P5.
7d7d2cbc 1107$!
f18a93ab 1108$ IF (P5.EQS."")
7d7d2cbc
UM
1109$ THEN
1110$!
1111$! Find out what socket library we have available
1112$!
1113$ IF F$PARSE("SOCKETSHR:") .NES. ""
1114$ THEN
1115$!
1116$! We have SOCKETSHR, and it is my opinion that it's the best to use.
1117$!
f18a93ab 1118$ P5 = "SOCKETSHR"
7d7d2cbc
UM
1119$!
1120$! Tell the user
1121$!
1122$ WRITE SYS$OUTPUT "Using SOCKETSHR for TCP/IP"
1123$!
1124$! Else, let's look for something else
1125$!
1126$ ELSE
1127$!
1128$! Like UCX (the reason to do this before Multinet is that the UCX
1129$! emulation is easier to use...)
1130$!
1131$ IF F$TRNLNM("UCX$IPC_SHR") .NES. "" -
1132 .OR. F$PARSE("SYS$SHARE:UCX$IPC_SHR.EXE") .NES. "" -
1133 .OR. F$PARSE("SYS$LIBRARY:UCX$IPC.OLB") .NES. ""
1134$ THEN
1135$!
1136$! Last resort: a UCX or UCX-compatible library
1137$!
f18a93ab 1138$ P5 = "UCX"
7d7d2cbc
UM
1139$!
1140$! Tell the user
1141$!
1142$ WRITE SYS$OUTPUT "Using UCX or an emulation thereof for TCP/IP"
1143$!
1144$! That was all...
1145$!
1146$ ENDIF
1147$ ENDIF
1148$ ENDIF
1149$!
1150$! Set Up Initial CC Definitions, Possibly With User Ones
1151$!
6525ced5 1152$ CCDEFS = "TCPIP_TYPE_''P5',DSO_VMS"
7d7d2cbc
UM
1153$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
1154$ CCEXTRAFLAGS = ""
1155$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
6209ada9 1156$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX"
7d7d2cbc 1157$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
6209ada9 1158 CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
7d7d2cbc
UM
1159$!
1160$! Check To See If The User Entered A Valid Paramter.
1161$!
f18a93ab 1162$ IF (P4.EQS."VAXC").OR.(P4.EQS."DECC").OR.(P4.EQS."GNUC")
7d7d2cbc
UM
1163$ THEN
1164$!
1165$! Check To See If The User Wanted DECC.
1166$!
f18a93ab 1167$ IF (P4.EQS."DECC")
7d7d2cbc
UM
1168$ THEN
1169$!
1170$! Looks Like DECC, Set To Use DECC.
1171$!
1172$ COMPILER = "DECC"
1173$!
1174$! Tell The User We Are Using DECC.
1175$!
1176$ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
1177$!
1178$! Use DECC...
1179$!
1180$ CC = "CC"
1181$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
1182 THEN CC = "CC/DECC"
1183$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
5270e702 1184 "/NOLIST/PREFIX=ALL" + -
41d2a336 1185 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS])" + -
5270e702 1186 CCEXTRAFLAGS
7d7d2cbc
UM
1187$!
1188$! Define The Linker Options File Name.
1189$!
1190$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT"
1191$!
1192$! End DECC Check.
1193$!
1194$ ENDIF
1195$!
1196$! Check To See If We Are To Use VAXC.
1197$!
f18a93ab 1198$ IF (P4.EQS."VAXC")
7d7d2cbc
UM
1199$ THEN
1200$!
1201$! Looks Like VAXC, Set To Use VAXC.
1202$!
1203$ COMPILER = "VAXC"
1204$!
1205$! Tell The User We Are Using VAX C.
1206$!
1207$ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
1208$!
1209$! Compile Using VAXC.
1210$!
1211$ CC = "CC"
1212$ IF ARCH.EQS."AXP"
1213$ THEN
1214$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!"
1215$ EXIT
1216$ ENDIF
1217$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
5270e702 1218$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
41d2a336 1219 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS])" + -
7d7d2cbc
UM
1220 CCEXTRAFLAGS
1221$ CCDEFS = """VAXC""," + CCDEFS
1222$!
1223$! Define <sys> As SYS$COMMON:[SYSLIB]
1224$!
1225$ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
1226$!
1227$! Define The Linker Options File Name.
1228$!
1229$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT"
1230$!
1231$! End VAXC Check
1232$!
1233$ ENDIF
1234$!
1235$! Check To See If We Are To Use GNU C.
1236$!
f18a93ab 1237$ IF (P4.EQS."GNUC")
7d7d2cbc
UM
1238$ THEN
1239$!
1240$! Looks Like GNUC, Set To Use GNUC.
1241$!
1242$ COMPILER = "GNUC"
1243$!
1244$! Tell The User We Are Using GNUC.
1245$!
1246$ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
1247$!
1248$! Use GNU C...
1249$!
1250$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
41d2a336 1251 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS])" + -
5270e702 1252 CCEXTRAFLAGS
7d7d2cbc
UM
1253$!
1254$! Define The Linker Options File Name.
1255$!
1256$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT"
1257$!
1258$! End The GNU C Check.
1259$!
1260$ ENDIF
1261$!
1262$! Set up default defines
1263$!
1264$ CCDEFS = """FLAT_INC=1""," + CCDEFS
1265$!
1266$! Check To See If We Are To Compile With RSAREF Routines.
1267$!
1268$ IF (RSAREF.EQS."TRUE")
1269$ THEN
1270$!
1271$! Compile With RSAREF.
1272$!
1273$ CCDEFS = CCDEFS + ",""RSAref=1"""
1274$!
1275$! Tell The User This.
1276$!
1277$ WRITE SYS$OUTPUT "Compiling With RSAREF Routines."
1278$!
1279$! Else, We Don't Care. Compile Without The RSAREF Library.
1280$!
1281$ ELSE
1282$!
1283$! Tell The User We Are Compile Without The RSAREF Routines.
1284$!
1285$ WRITE SYS$OUTPUT "Compiling Without The RSAREF Routines.
1286$!
1287$! End The RSAREF Check.
1288$!
1289$ ENDIF
1290$!
1291$! Finish up the definition of CC.
1292$!
1293$ IF COMPILER .EQS. "DECC"
1294$ THEN
1295$ IF CCDISABLEWARNINGS .EQS. ""
1296$ THEN
1297$ CC4DISABLEWARNINGS = "DOLLARID"
1298$ ELSE
1299$ CC4DISABLEWARNINGS = CCDISABLEWARNINGS + ",DOLLARID"
1300$ CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
1301$ ENDIF
1302$ CC4DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC4DISABLEWARNINGS + "))"
1303$ ELSE
1304$ CCDISABLEWARNINGS = ""
1305$ CC4DISABLEWARNINGS = ""
1306$ ENDIF
1307$ CC3 = CC + "/DEFINE=(" + CCDEFS + ISSEVEN + ")" + CCDISABLEWARNINGS
1308$ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
f18a93ab 1309$ IF ARCH .EQS. "VAX" .AND. COMPILER .EQS. "DECC" .AND. P3 .NES. "DEBUG"
7d7d2cbc
UM
1310$ THEN
1311$ CC5 = CC + "/OPTIMIZE=NODISJOINT"
1312$ ELSE
1313$ CC5 = CC + "/NOOPTIMIZE"
1314$ ENDIF
1315$ CC4 = CC - CCDISABLEWARNINGS + CC4DISABLEWARNINGS
1316$!
1317$! Show user the result
1318$!
1319$ WRITE SYS$OUTPUT "Main C Compiling Command: ",CC
1320$!
1321$! Else The User Entered An Invalid Arguement.
1322$!
1323$ ELSE
1324$!
1325$! Tell The User We Don't Know What They Want.
1326$!
1327$ WRITE SYS$OUTPUT ""
f18a93ab 1328$ WRITE SYS$OUTPUT "The Option ",P4," Is Invalid. The Valid Options Are:"
7d7d2cbc
UM
1329$ WRITE SYS$OUTPUT ""
1330$ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C."
1331$ WRITE SYS$OUTPUT " DECC : To Compile With DEC C."
1332$ WRITE SYS$OUTPUT " GNUC : To Compile With GNU C."
1333$ WRITE SYS$OUTPUT ""
1334$!
1335$! Time To EXIT.
1336$!
1337$ EXIT
1338$!
1339$! End The Valid Arguement Check.
1340$!
1341$ ENDIF
1342$!
1343$! Build a MACRO command for the architecture at hand
1344$!
1345$ IF ARCH .EQS. "VAX" THEN MACRO = "MACRO/''DEBUGGER'"
1346$ IF ARCH .EQS. "AXP" THEN MACRO = "MACRO/MIGRATION/''DEBUGGER'/''MACRO_OPTIMIZE'"
1347$!
1348$! Show user the result
1349$!
1350$ WRITE SYS$OUTPUT "Main MACRO Compiling Command: ",MACRO
1351$!
1352$! Time to check the contents, and to make sure we get the correct library.
1353$!
f18a93ab 1354$ IF P5.EQS."SOCKETSHR" .OR. P5.EQS."MULTINET" .OR. P5.EQS."UCX"
7d7d2cbc
UM
1355$ THEN
1356$!
1357$! Check to see if SOCKETSHR was chosen
1358$!
f18a93ab 1359$ IF P5.EQS."SOCKETSHR"
7d7d2cbc
UM
1360$ THEN
1361$!
1362$! Set the library to use SOCKETSHR
1363$!
1364$ TCPIP_LIB = "[-.VMS]SOCKETSHR_SHR.OPT/OPT"
1365$!
1366$! Done with SOCKETSHR
1367$!
1368$ ENDIF
1369$!
1370$! Check to see if MULTINET was chosen
1371$!
f18a93ab 1372$ IF P5.EQS."MULTINET"
7d7d2cbc
UM
1373$ THEN
1374$!
1375$! Set the library to use UCX emulation.
1376$!
f18a93ab 1377$ P5 = "UCX"
7d7d2cbc
UM
1378$!
1379$! Done with MULTINET
1380$!
1381$ ENDIF
1382$!
1383$! Check to see if UCX was chosen
1384$!
f18a93ab 1385$ IF P5.EQS."UCX"
7d7d2cbc
UM
1386$ THEN
1387$!
1388$! Set the library to use UCX.
1389$!
1390$ TCPIP_LIB = "[-.VMS]UCX_SHR_DECC.OPT/OPT"
1391$ IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
1392$ THEN
1393$ TCPIP_LIB = "[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT"
1394$ ELSE
1395$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
1396 TCPIP_LIB = "[-.VMS]UCX_SHR_VAXC.OPT/OPT"
1397$ ENDIF
1398$!
1399$! Done with UCX
1400$!
1401$ ENDIF
1402$!
1403$! Print info
1404$!
1405$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
1406$!
1407$! Else The User Entered An Invalid Arguement.
1408$!
1409$ ELSE
1410$!
1411$! Tell The User We Don't Know What They Want.
1412$!
1413$ WRITE SYS$OUTPUT ""
f18a93ab 1414$ WRITE SYS$OUTPUT "The Option ",P5," Is Invalid. The Valid Options Are:"
7d7d2cbc
UM
1415$ WRITE SYS$OUTPUT ""
1416$ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library."
1417$ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library."
1418$ WRITE SYS$OUTPUT ""
1419$!
1420$! Time To EXIT.
1421$!
1422$ EXIT
1423$!
1424$! Done with TCP/IP libraries
1425$!
1426$ ENDIF
1427$!
1428$! Check if the user wanted to compile just a subset of all the encryption
1429$! methods.
1430$!
f18a93ab 1431$ IF P7 .NES. ""
7d7d2cbc 1432$ THEN
f18a93ab 1433$ ENCRYPT_TYPES = P7
ea823552 1434$! NYI: ENCRYPT_PROGRAMS = P7
7d7d2cbc
UM
1435$ ENDIF
1436$!
1437$! Time To RETURN...
1438$!
1439$ RETURN
1440$!
1441$ INITIALISE:
1442$!
1443$! Save old value of the logical name OPENSSL
1444$!
1445$ __SAVE_OPENSSL = F$TRNLNM("OPENSSL","LNM$PROCESS_TABLE")
1446$!
1447$! Save directory information
1448$!
1449$ __HERE = F$PARSE(F$PARSE("A.;",F$ENVIRONMENT("PROCEDURE"))-"A.;","[]A.;") - "A.;"
1450$ __TOP = __HERE - "CRYPTO]"
1451$ __INCLUDE = __TOP + "INCLUDE.OPENSSL]"
1452$!
1453$! Set up the logical name OPENSSL to point at the include directory
1454$!
1455$ DEFINE OPENSSL/NOLOG '__INCLUDE'
1456$!
1457$! Done
1458$!
1459$ RETURN
1460$!
1461$ CLEANUP:
1462$!
1463$! Restore the logical name OPENSSL if it had a value
1464$!
1465$ IF __SAVE_OPENSSL .EQS. ""
1466$ THEN
1467$ DEASSIGN OPENSSL
1468$ ELSE
1469$ DEFINE/NOLOG OPENSSL '__SAVE_OPENSSL'
1470$ ENDIF
1471$!
1472$! Done
1473$!
1474$ RETURN