3 $! Written By: Robert Byer
5 $! A-Com Computing, Inc.
6 $! byer@mail.all-net.net
8 $! Changes by Richard Levitte <richard@levitte.org>
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
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.
17 $! Specify RSAREF as P1 to compile with the RSAREF library instead of
18 $! the regular one. If you specify NORSAREF it will compile with the
19 $! regular RSAREF routines. (Note: If you are in the United States
20 $! you MUST compile with RSAREF unless you have a license from RSA).
22 $! Note: The RSAREF libraries are NOT INCLUDED and you have to
23 $! download it from "ftp://ftp.rsa.com/rsaref". You have to
24 $! get the ".tar-Z" file as the ".zip" file dosen't have the
25 $! directory structure stored. You have to extract the file
26 $! into the [.RSAREF] directory under the root directory as that
27 $! is where the scripts will look for the files.
29 $! Specify DEBUG or NODEBUG as P2 to compile with or without debugger
32 $! Specify which compiler at P3 to try to compile under.
38 $! If you don't speficy a compiler, it will try to determine which
39 $! "C" compiler to use.
41 $! P4, if defined, sets a TCP/IP library to use, through one of the following
45 $! SOCKETSHR for SOCKETSHR+NETLIB
47 $! P5, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
49 $! P6, if defined, sets a choice of crypto methods to compile.
50 $! WARNING: this should only be done to recompile some part of an already
51 $! fully compiled library.
54 $! Define A TCP/IP Library That We Will Need To Link To.
55 $! (That Is, If We Need To Link To One.)
59 $! Check Which Architecture We Are Using.
61 $ IF (F$GETSYI("CPU").GE.128)
64 $! The Architecture Is AXP
72 $! The Architecture Is VAX.
76 $! End The Architecture Check.
80 $! Define The Different Encryption Types.
82 $ ENCRYPT_TYPES = ",MD2,MD5,SHA,MDC2,HMAC,RIPEMD,"+ -
83 "DES,RC2,RC4,RC5,IDEA,BF,CAST,"+ -
85 "BUFFER,BIO,STACK,LHASH,RAND,ERR,OBJECTS,"+ -
86 "EVP,EVP_2,ASN1,ASN1_2,PEM,X509,X509V3,"+ -
87 "CONF,TXT_DB,PKCS7,PKCS12,COMP"
89 $! Check To Make Sure We Have Valid Command Line Parameters.
93 $! Initialise logical names and such
97 $! Tell The User What Kind of Machine We Run On.
99 $ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
101 $! Define The OBJ Directory.
103 $ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.CRYPTO]
105 $! Check To See If The Architecture Specific OBJ Directory Exists.
107 $ IF (F$PARSE(OBJ_DIR).EQS."")
110 $! It Dosen't Exist, So Create It.
112 $ CREATE/DIR 'OBJ_DIR'
114 $! End The Architecture Specific OBJ Directory Check.
118 $! Define The EXE Directory.
120 $ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]
122 $! Check To See If The Architecture Specific Directory Exists.
124 $ IF (F$PARSE(EXE_DIR).EQS."")
127 $! It Dosen't Exist, So Create It.
129 $ CREATE/DIRECTORY 'EXE_DIR'
131 $! End The Architecture Specific Directory Check.
135 $! Define The Library Name.
137 $ LIB_NAME := 'EXE_DIR'LIBCRYPTO.OLB
139 $! Check To See If We Already Have A "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" Library...
141 $ IF (F$SEARCH(LIB_NAME).EQS."")
144 $! Guess Not, Create The Library.
146 $ LIBRARY/CREATE/OBJECT 'LIB_NAME'
148 $! End The Library Check.
152 $! Define The Different Encryption "library" Strings.
154 $ LIB_ = "cryptlib,mem,cversion,ex_data,tmdiff,cpt_err"
155 $ LIB_MD2 = "md2_dgst,md2_one"
156 $ LIB_MD5 = "md5_dgst,md5_one"
157 $ LIB_SHA = "sha_dgst,sha1dgst,sha_one,sha1_one"
158 $ LIB_MDC2 = "mdc2dgst,mdc2_one"
160 $ LIB_RIPEMD = "rmd_dgst,rmd_one"
161 $ LIB_DES = "set_key,ecb_enc,cbc_enc,"+ -
162 "ecb3_enc,cfb64enc,cfb64ede,cfb_enc,ofb64ede,"+ -
163 "enc_read,enc_writ,ofb64enc,"+ -
164 "ofb_enc,str2key,pcbc_enc,qud_cksm,rand_key,"+ -
165 "des_enc,fcrypt_b,read2pwd,"+ -
166 "fcrypt,xcbc_enc,read_pwd,rpc_enc,cbc_cksm,supp,ede_cbcm_enc"
167 $ LIB_RC2 = "rc2_ecb,rc2_skey,rc2_cbc,rc2cfb64,rc2ofb64"
168 $ LIB_RC4 = "rc4_skey,rc4_enc"
169 $ LIB_RC5 = "rc5_skey,rc5_ecb,rc5_enc,rc5cfb64,rc5ofb64"
170 $ LIB_IDEA = "i_cbc,i_cfb64,i_ofb64,i_ecb,i_skey"
171 $ LIB_BF = "bf_skey,bf_ecb,bf_enc,bf_cfb64,bf_ofb64"
172 $ LIB_CAST = "c_skey,c_ecb,c_enc,c_cfb64,c_ofb64"
173 $ LIB_BN_ASM = "[.asm]vms.mar,vms-helper"
174 $ IF F$TRNLNM("OPENSSL_NO_ASM") .NES. "" THEN LIB_BN_ASM = "bn_asm"
175 $ LIB_BN = "bn_add,bn_div,bn_exp,bn_lib,bn_mul,"+ -
176 "bn_print,bn_rand,bn_shift,bn_word,bn_blind,"+ -
177 "bn_gcd,bn_prime,bn_err,bn_sqr,"+LIB_BN_ASM+",bn_recp,bn_mont,"+ -
179 $ LIB_RSA = "rsa_eay,rsa_gen,rsa_lib,rsa_sign,rsa_saos,rsa_err,"+ -
180 "rsa_pk1,rsa_ssl,rsa_none,rsa_oaep"
181 $ LIB_DSA = "dsa_gen,dsa_key,dsa_lib,dsa_asn1,dsa_vrf,dsa_sign,dsa_err"
182 $ LIB_DH = "dh_gen,dh_key,dh_lib,dh_check,dh_err"
183 $ LIB_BUFFER = "buffer,buf_err"
184 $ LIB_BIO = "bio_lib,bio_cb,bio_err,"+ -
185 "bss_mem,bss_null,bss_fd,"+ -
186 "bss_file,bss_sock,bss_conn,"+ -
187 "bf_null,bf_buff,b_print,b_dump,"+ -
188 "b_sock,bss_acpt,bf_nbio,bss_rtcp" ! + ",bss_log" for syslog
189 $ LIB_STACK = "stack"
190 $ LIB_LHASH = "lhash,lh_stats"
191 $ LIB_RAND = "md_rand,randfile,rand_lib"
192 $ LIB_ERR = "err,err_all,err_prn"
193 $ LIB_OBJECTS = "o_names,obj_dat,obj_lib,obj_err"
194 $ LIB_EVP = "encode,digest,evp_enc,evp_key,"+ -
195 "e_ecb_d,e_cbc_d,e_cfb_d,e_ofb_d,"+ -
196 "e_ecb_i,e_cbc_i,e_cfb_i,e_ofb_i,"+ -
197 "e_ecb_3d,e_cbc_3d,e_rc4,names,"+ -
198 "e_cfb_3d,e_ofb_3d,e_xcbc_d,"+ -
199 "e_ecb_r2,e_cbc_r2,e_cfb_r2,e_ofb_r2,"+ -
200 "e_ecb_bf,e_cbc_bf,e_cfb_bf,e_ofb_bf"
201 $ LIB_EVP_2 = "e_ecb_c,e_cbc_c,e_cfb_c,e_ofb_c,"+ -
202 "e_ecb_r5,e_cbc_r5,e_cfb_r5,e_ofb_r5,"+ -
203 "m_null,m_md2,m_md5,m_sha,m_sha1,m_dss,m_dss1,m_mdc2,"+ -
205 "p_open,p_seal,p_sign,p_verify,p_lib,p_enc,p_dec,"+ -
206 "bio_md,bio_b64,bio_enc,evp_err,e_null,"+ -
207 "c_all,evp_lib,bio_ok,evp_pkey,evp_pbe"
208 $ LIB_ASN1 = "a_object,a_bitstr,a_utctm,a_gentm,a_time,a_int,a_octet,"+ -
209 "a_print,a_type,a_set,a_dup,a_d2i_fp,a_i2d_fp,a_bmp,"+ -
210 "a_enum,a_vis,a_utf8,a_sign,a_digest,a_verify,"+ -
211 "x_algor,x_val,x_pubkey,x_sig,x_req,x_attrib,"+ -
212 "x_name,x_cinf,x_x509,x_crl,x_info,x_spki,nsseq,"+ -
213 "d2i_r_pr,i2d_r_pr,d2i_r_pu,i2d_r_pu,"+ -
214 "d2i_s_pr,i2d_s_pr,d2i_s_pu,i2d_s_pu,"+ -
215 "d2i_pu,d2i_pr,i2d_pu,i2d_pr"
216 $ LIB_ASN1_2 = "t_req,t_x509,t_crl,t_pkey,"+ -
217 "p7_i_s,p7_signi,p7_signd,p7_recip,p7_enc_c,p7_evp,"+ -
218 "p7_dgst,p7_s_e,p7_enc,p7_lib,"+ -
219 "f_int,f_string,i2d_dhp,i2d_dsap,d2i_dhp,d2i_dsap,n_pkey,"+ -
220 "f_enum,a_hdr,x_pkey,a_bool,x_exten,"+ -
221 "asn1_par,asn1_lib,asn1_err,a_meth,a_bytes,"+ -
222 "evp_asn1,asn_pack,p5_pbe,p5_pbev2,p8_pkey"
223 $ LIB_PEM = "pem_sign,pem_seal,pem_info,pem_lib,pem_all,pem_err"
224 $ LIB_X509 = "x509_def,x509_d2,x509_r2x,x509_cmp,"+ -
225 "x509_obj,x509_req,x509_vfy,"+ -
226 "x509_set,x509rset,x509_err,"+ -
227 "x509name,x509_v3,x509_ext,"+ -
228 "x509type,x509_lu,x_all,x509_txt,"+ -
230 $ LIB_X509V3 = "v3_bcons,v3_bitst,v3_conf,v3_extku,v3_ia5,v3_lib,"+ -
231 "v3_prn,v3_utl,v3err,v3_genn,v3_alt,v3_skey,v3_akey,v3_pku,"+ -
232 "v3_int,v3_enum,v3_sxnet,v3_cpols,v3_crld"
233 $ LIB_CONF = "conf,conf_err"
234 $ LIB_TXT_DB = "txt_db"
235 $ LIB_PKCS7 = "pk7_lib,pkcs7err,pk7_doit"
236 $ LIB_PKCS12 = "p12_add,p12_attr,p12_bags,p12_crpt,p12_crt,p12_decr,"+ -
237 "p12_init,p12_key,p12_kiss,p12_lib,p12_mac,p12_mutl,"+ -
238 "p12_sbag,p12_utl,pk12err"
239 $ LIB_COMP = "comp_lib,"+ -
242 $! Setup exceptional compilations
244 $ COMPILEWITH_CC3 = ",bss_rtcp,"
245 $ COMPILEWITH_CC4 = ",a_utctm,"
246 $ COMPILEWITH_CC5 = ",md2_dgst,md5_dgst,mdc2dgst,sha_dgst,sha1dgst," + -
249 $! Check To See If We Are Going To Use RSAREF.
251 $ IF (RSAREF.EQS."TRUE" .AND. ENCRYPT_TYPES - "RSA".NES.ENCRYPT_TYPES)
254 $! Check To See If The File [-.RSAREF]RSAREF.C Is Actually There.
256 $ IF (F$SEARCH("SYS$DISK:[-.RSAREF]RSAREF.C").EQS."")
259 $! Tell The User That The File Dosen't Exist.
261 $ WRITE SYS$OUTPUT ""
262 $ WRITE SYS$OUTPUT "The File [-.RSAREF]RSAREF.C Dosen't Exist."
263 $ WRITE SYS$OUTPUT ""
269 $! End The [-.RSAREF]RSAREF.C Check.
273 $! Tell The User We Are Compiling The [-.RSAREF]RSAREF File.
275 $ WRITE SYS$OUTPUT "Compiling The [-.RSAREF]RSAREF File."
277 $! Compile [-.RSAREF]RSAREF.C
279 $ CC/OBJECT='OBJ_DIR'RSAREF.OBJ SYS$DISK:[-.RSAREF]RSAREF.C
281 $! Add It To The Library.
283 $ LIBRARY/REPLACE 'LIB_NAME' 'OBJ_DIR'RSAREF.OBJ
285 $! Delete The Object File.
287 $ DELETE 'OBJ_DIR'RSAREF.OBJ;*
289 $! Check To See If The File [-.RSAREF]RSAR_ERR.C Is Actually There.
291 $ IF (F$SEARCH("SYS$DISK:[-.RSAREF]RSAR_ERR.C").EQS."")
294 $! Tell The User That The File Dosen't Exist.
296 $ WRITE SYS$OUTPUT ""
297 $ WRITE SYS$OUTPUT "The File [-.RSAREF]RSAR_ERR.C Dosen't Exist."
298 $ WRITE SYS$OUTPUT ""
304 $! End The [-.RSAREF]RSAR_ERR.C File Check.
308 $! Tell The User We Are Compiling The [-.RSAREF]RSAR_ERR File.
310 $ WRITE SYS$OUTPUT "Compiling The [-.RSAREF]RSAR_ERR File."
312 $! Compile [-.RSAREF]RSAR_ERR.C
314 $ CC/OBJECT='OBJ_DIR'RSAR_ERR.OBJ SYS$DISK:[-.RSAREF]RSAR_ERR.C
316 $! Add It To The Library.
318 $ LIBRARY/REPLACE 'LIB_NAME' 'OBJ_DIR'RSAR_ERR.OBJ
320 $! Delete The Object File.
322 $ DELETE 'OBJ_DIR'RSAR_ERR.OBJ;*
324 $! End The RSAREF Check.
328 $! Figure Out What Other Modules We Are To Build.
332 $! Define A Module Counter.
340 $! Extract The Module Name From The Encryption List.
342 $ MODULE_NAME = F$ELEMENT(MODULE_COUNTER,",",ENCRYPT_TYPES)
344 $! Check To See If We Are At The End Of The Module List.
346 $ IF (MODULE_NAME.EQS.",")
349 $! We Are At The End Of The Module List, Go To MODULE_DONE.
353 $! End The Module List Check.
357 $! Increment The Moudle Counter.
359 $ MODULE_COUNTER = MODULE_COUNTER + 1
361 $! Tell The User What Module We Are Building.
363 $ IF (MODULE_NAME.NES."")
365 $ WRITE SYS$OUTPUT "Compiling The ",MODULE_NAME," Files."
368 $! Define A File Counter And Set It To "0".
372 $! Create The Library Module Name.
374 $ LIB_MODULE = "LIB_" + MODULE_NAME
375 $ IF (MODULE_NAME.EQS."ASN1_2")
377 $ MODULE_NAME = "ASN1"
379 $ IF (MODULE_NAME.EQS."EVP_2")
381 $ MODULE_NAME = "EVP"
384 $! Check if the library module name actually is defined
386 $ IF F$TYPE('LIB_MODULE') .EQS. ""
389 $ WRITE SYS$ERROR "The module ",MODULE_NAME," does not exist. Continuing..."
394 $! Top Of The File Loop.
398 $! O.K, Extract The File Name From The File List.
400 $ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",'LIB_MODULE')
402 $! Check To See If We Are At The End Of The File List.
404 $ IF (FILE_NAME.EQS.",")
407 $! We Are At The End Of The File List, Goto FILE_DONE.
411 $! End The File List Check.
415 $! Increment The Counter.
417 $ FILE_COUNTER = FILE_COUNTER + 1
419 $! Create The Source File Name.
421 $ TMP_FILE_NAME = F$ELEMENT(1,"]",FILE_NAME)
422 $ IF TMP_FILE_NAME .EQS. "]" THEN TMP_FILE_NAME = FILE_NAME
423 $ IF F$ELEMENT(0,".",TMP_FILE_NAME) .EQS. TMP_FILE_NAME THEN -
424 FILE_NAME = FILE_NAME + ".c"
425 $ IF (MODULE_NAME.NES."")
427 $ SOURCE_FILE = "SYS$DISK:[." + MODULE_NAME+ "]" + FILE_NAME
429 $ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME
431 $ SOURCE_FILE = SOURCE_FILE - "]["
433 $! Create The Object File Name.
435 $ OBJECT_FILE = OBJ_DIR + F$PARSE(FILE_NAME,,,"NAME","SYNTAX_ONLY") + ".OBJ"
436 $ ON WARNING THEN GOTO NEXT_FILE
438 $! Check To See If The File We Want To Compile Is Actually There.
440 $ IF (F$SEARCH(SOURCE_FILE).EQS."")
443 $! Tell The User That The File Dosen't Exist.
445 $ WRITE SYS$OUTPUT ""
446 $ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist."
447 $ WRITE SYS$OUTPUT ""
453 $! End The File Exist Check.
457 $! Tell The User We Are Compiling The File.
459 $ IF (MODULE_NAME.EQS."")
461 WRITE SYS$OUTPUT "Compiling The ",FILE_NAME," File."
463 $ IF (MODULE_NAME.NES."")
465 $ WRITE SYS$OUTPUT " ",FILE_NAME,""
470 $ ON ERROR THEN GOTO NEXT_FILE
471 $ FILE_NAME0 = F$ELEMENT(0,".",FILE_NAME)
472 $ IF FILE_NAME - ".mar" .NES. FILE_NAME
474 $ MACRO/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
476 $ IF COMPILEWITH_CC3 - FILE_NAME0 .NES. COMPILEWITH_CC3
478 $ CC3/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
480 $ IF COMPILEWITH_CC4 - FILE_NAME0 .NES. COMPILEWITH_CC4
482 $ CC4/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
484 $ IF COMPILEWITH_CC5 - FILE_NAME0 .NES. COMPILEWITH_CC5
486 $ CC5/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
488 $ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
494 $! Add It To The Library.
496 $ LIBRARY/REPLACE 'LIB_NAME' 'OBJECT_FILE'
498 $! Time To Clean Up The Object File.
500 $ DELETE 'OBJECT_FILE';*
502 $! Go Back And Do It Again.
506 $! All Done With This Library Part.
510 $! Go Back And Get The Next Module.
514 $! All Done With This Module.
518 $! Tell The User That We Are All Done.
520 $ WRITE SYS$OUTPUT "All Done..."
525 $! Check For The Link Option FIle.
529 $! Check To See If We Need To Make A VAX C Option File.
531 $ IF (COMPILER.EQS."VAXC")
534 $! Check To See If We Already Have A VAX C Linker Option File.
536 $ IF (F$SEARCH(OPT_FILE).EQS."")
539 $! We Need A VAX C Linker Option File.
544 ! Default System Options File To Link Agianst
545 ! The Sharable VAX C Runtime Library.
547 SYS$SHARE:VAXCRTL.EXE/SHARE
550 $! End The Option File Check.
554 $! End The VAXC Check.
558 $! Check To See If We Need A GNU C Option File.
560 $ IF (COMPILER.EQS."GNUC")
563 $! Check To See If We Already Have A GNU C Linker Option File.
565 $ IF (F$SEARCH(OPT_FILE).EQS."")
568 $! We Need A GNU C Linker Option File.
573 ! Default System Options File To Link Agianst
574 ! The Sharable C Runtime Library.
576 GNU_CC:[000000]GCCLIB/LIBRARY
577 SYS$SHARE:VAXCRTL/SHARE
580 $! End The Option File Check.
584 $! End The GNU C Check.
588 $! Check To See If We Need A DEC C Option File.
590 $ IF (COMPILER.EQS."DECC")
593 $! Check To See If We Already Have A DEC C Linker Option File.
595 $ IF (F$SEARCH(OPT_FILE).EQS."")
598 $! Figure Out If We Need An AXP Or A VAX Linker Option File.
600 $ IF ARCH .EQS. "VAX"
603 $! We Need A DEC C Linker Option File For VAX.
608 ! Default System Options File To Link Agianst
609 ! The Sharable DEC C Runtime Library.
611 SYS$SHARE:DECC$SHR.EXE/SHARE
618 $! Create The AXP Linker Option File.
623 ! Default System Options File For AXP To Link Agianst
624 ! The Sharable C Runtime Library.
626 SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
627 SYS$SHARE:CMA$OPEN_RTL/SHARE
630 $! End The VAX/AXP DEC C Option File Check.
634 $! End The Option File Search.
638 $! End The DEC C Check.
642 $! Tell The User What Linker Option File We Are Using.
644 $ WRITE SYS$OUTPUT "Using Linker Option File ",OPT_FILE,"."
650 $! Check The User's Options.
654 $! Check To See If P1 Is Blank.
656 $ IF (P1.EQS."NORSAREF")
659 $! P1 Is NORSAREF, So Compile With The Regular RSA Libraries.
664 $! Check To See If We Are To Use The RSAREF Library.
666 $ IF (P1.EQS."RSAREF")
669 $! Check To Make Sure We Have The RSAREF Source Code Directory.
671 $ IF (F$SEARCH("SYS$DISK:[-.RSAREF]SOURCE.DIR").EQS."")
674 $! We Don't Have The RSAREF Souce Code Directory, So Tell The
677 $ WRITE SYS$OUTPUT ""
678 $ WRITE SYS$OUTPUT "It appears that you don't have the RSAREF Souce Code."
679 $ WRITE SYS$OUTPUT "You need to go to 'ftp://ftp.rsa.com/rsaref'. You have to"
680 $ WRITE SYS$OUTPUT "get the '.tar-Z' file as the '.zip' file dosen't have the"
681 $ WRITE SYS$OUTPUT "directory structure stored. You have to extract the file"
682 $ WRITE SYS$OUTPUT "into the [.RSAREF] directory under the root directory"
683 $ WRITE SYS$OUTPUT "as that is where the scripts will look for the files."
684 $ WRITE SYS$OUTPUT ""
690 $! Else, Compile Using The RSAREF Library.
697 $! They Entered An Invalid Option..
699 $ WRITE SYS$OUTPUT ""
700 $ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
701 $ WRITE SYS$OUTPUT ""
702 $ WRITE SYS$OUTPUT " RSAREF : Compile With The RSAREF Library."
703 $ WRITE SYS$OUTPUT " NORSAREF : Compile With The Regular RSA Library."
704 $ WRITE SYS$OUTPUT ""
710 $! End The Valid Arguement Check.
718 $! Check To See If P2 Is Blank.
720 $ IF (P2.EQS."NODEBUG")
723 $! P2 Is NODEBUG, So Compile Without The Debugger Information.
725 $ DEBUGGER = "NODEBUG"
726 $ TRACEBACK = "NOTRACEBACK"
727 $ GCC_OPTIMIZE = "OPTIMIZE"
728 $ CC_OPTIMIZE = "OPTIMIZE"
729 $ MACRO_OPTIMIZE = "OPTIMIZE"
730 $ WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
731 $ WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
734 $! Check To See If We Are To Compile With Debugger Information.
736 $ IF (P2.EQS."DEBUG")
739 $! Compile With Debugger Information.
742 $ TRACEBACK = "TRACEBACK"
743 $ GCC_OPTIMIZE = "NOOPTIMIZE"
744 $ CC_OPTIMIZE = "NOOPTIMIZE"
745 $ MACRO_OPTIMIZE = "NOOPTIMIZE"
746 $ WRITE SYS$OUTPUT "Debugger Information Will Be Produced During Compile."
747 $ WRITE SYS$OUTPUT "Compiling Without Compiler Optimization."
750 $! They Entered An Invalid Option..
752 $ WRITE SYS$OUTPUT ""
753 $ WRITE SYS$OUTPUT "The Option ",P2," Is Invalid. The Valid Options Are:"
754 $ WRITE SYS$OUTPUT ""
755 $ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information."
756 $ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information."
757 $ WRITE SYS$OUTPUT ""
763 $! End The Valid Arguement Check.
771 $! Special Threads For OpenVMS v7.1 Or Later
773 $! Written By: Richard Levitte
774 $! richard@levitte.org
777 $! Check To See If We Have A Option For P5.
782 $! Get The Version Of VMS We Are Using.
785 $ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION")))
786 $ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
788 $! Check To See If The VMS Version Is v7.1 Or Later.
793 $! We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
795 $ ISSEVEN := ,PTHREAD_USE_D4
797 $! End The VMS Version Check.
805 $! Check To See If P3 Is Blank.
810 $! O.K., The User Didn't Specify A Compiler, Let's Try To
811 $! Find Out Which One To Use.
813 $! Check To See If We Have GNU C.
815 $ IF (F$TRNLNM("GNU_CC").NES."")
818 $! Looks Like GNUC, Set To Use GNUC.
826 $! Check To See If We Have VAXC Or DECC.
828 $ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
831 $! Looks Like DECC, Set To Use DECC.
839 $! Looks Like VAXC, Set To Use VAXC.
843 $! End The VAXC Compiler Check.
847 $! End The DECC & VAXC Compiler Check.
851 $! End The Compiler Check.
855 $! Check To See If We Have A Option For P4.
860 $! Find out what socket library we have available
862 $ IF F$PARSE("SOCKETSHR:") .NES. ""
865 $! We have SOCKETSHR, and it is my opinion that it's the best to use.
871 $ WRITE SYS$OUTPUT "Using SOCKETSHR for TCP/IP"
873 $! Else, let's look for something else
877 $! Like UCX (the reason to do this before Multinet is that the UCX
878 $! emulation is easier to use...)
880 $ IF F$TRNLNM("UCX$IPC_SHR") .NES. "" -
881 .OR. F$PARSE("SYS$SHARE:UCX$IPC_SHR.EXE") .NES. "" -
882 .OR. F$PARSE("SYS$LIBRARY:UCX$IPC.OLB") .NES. ""
885 $! Last resort: a UCX or UCX-compatible library
891 $ WRITE SYS$OUTPUT "Using UCX or an emulation thereof for TCP/IP"
899 $! Set Up Initial CC Definitions, Possibly With User Ones
901 $ CCDEFS = "VMS=1,TCPIP_TYPE_''P4'"
902 $ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
904 $ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
905 $ CCDISABLEWARNINGS = ""
906 $ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
907 CCDISABLEWARNINGS = USER_CCDISABLEWARNINGS
909 $! Check To See If The User Entered A Valid Paramter.
911 $ IF (P3.EQS."VAXC").OR.(P3.EQS."DECC").OR.(P3.EQS."GNUC")
914 $! Check To See If The User Wanted DECC.
919 $! Looks Like DECC, Set To Use DECC.
923 $! Tell The User We Are Using DECC.
925 $ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
930 $ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
932 $ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
933 "/NOLIST/PREFIX=ALL/INCLUDE=SYS$DISK:[]" + CCEXTRAFLAGS
935 $! Define The Linker Options File Name.
937 $ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT"
943 $! Check To See If We Are To Use VAXC.
948 $! Looks Like VAXC, Set To Use VAXC.
952 $! Tell The User We Are Using VAX C.
954 $ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
956 $! Compile Using VAXC.
961 $ WRITE SYS$OUTPUT "There is no VAX C on Alpha!"
964 $ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
965 $ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST/INCLUDE=SYS$DISK:[]" + -
967 $ CCDEFS = """VAXC""," + CCDEFS
969 $! Define <sys> As SYS$COMMON:[SYSLIB]
971 $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
973 $! Define The Linker Options File Name.
975 $ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT"
981 $! Check To See If We Are To Use GNU C.
986 $! Looks Like GNUC, Set To Use GNUC.
990 $! Tell The User We Are Using GNUC.
992 $ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
996 $ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
997 "/INCLUDE=SYS$DISK:[]" + CCEXTRAFLAGS
999 $! Define The Linker Options File Name.
1001 $ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT"
1003 $! End The GNU C Check.
1007 $! Set up default defines
1009 $ CCDEFS = """FLAT_INC=1""," + CCDEFS
1011 $! Check To See If We Are To Compile With RSAREF Routines.
1013 $ IF (RSAREF.EQS."TRUE")
1016 $! Compile With RSAREF.
1018 $ CCDEFS = CCDEFS + ",""RSAref=1"""
1020 $! Tell The User This.
1022 $ WRITE SYS$OUTPUT "Compiling With RSAREF Routines."
1024 $! Else, We Don't Care. Compile Without The RSAREF Library.
1028 $! Tell The User We Are Compile Without The RSAREF Routines.
1030 $ WRITE SYS$OUTPUT "Compiling Without The RSAREF Routines.
1032 $! End The RSAREF Check.
1036 $! Finish up the definition of CC.
1038 $ IF COMPILER .EQS. "DECC"
1040 $ IF CCDISABLEWARNINGS .EQS. ""
1042 $ CC4DISABLEWARNINGS = "DOLLARID"
1044 $ CC4DISABLEWARNINGS = CCDISABLEWARNINGS + ",DOLLARID"
1045 $ CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
1047 $ CC4DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC4DISABLEWARNINGS + "))"
1049 $ CCDISABLEWARNINGS = ""
1050 $ CC4DISABLEWARNINGS = ""
1052 $ CC3 = CC + "/DEFINE=(" + CCDEFS + ISSEVEN + ")" + CCDISABLEWARNINGS
1053 $ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
1054 $ IF ARCH .EQS. "VAX" .AND. COMPILER .EQS. "DECC" .AND. P2 .NES. "DEBUG"
1056 $ CC5 = CC + "/OPTIMIZE=NODISJOINT"
1058 $ CC5 = CC + "/NOOPTIMIZE"
1060 $ CC4 = CC - CCDISABLEWARNINGS + CC4DISABLEWARNINGS
1062 $! Show user the result
1064 $ WRITE SYS$OUTPUT "Main C Compiling Command: ",CC
1066 $! Else The User Entered An Invalid Arguement.
1070 $! Tell The User We Don't Know What They Want.
1072 $ WRITE SYS$OUTPUT ""
1073 $ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:"
1074 $ WRITE SYS$OUTPUT ""
1075 $ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C."
1076 $ WRITE SYS$OUTPUT " DECC : To Compile With DEC C."
1077 $ WRITE SYS$OUTPUT " GNUC : To Compile With GNU C."
1078 $ WRITE SYS$OUTPUT ""
1084 $! End The Valid Arguement Check.
1088 $! Build a MACRO command for the architecture at hand
1090 $ IF ARCH .EQS. "VAX" THEN MACRO = "MACRO/''DEBUGGER'"
1091 $ IF ARCH .EQS. "AXP" THEN MACRO = "MACRO/MIGRATION/''DEBUGGER'/''MACRO_OPTIMIZE'"
1093 $! Show user the result
1095 $ WRITE SYS$OUTPUT "Main MACRO Compiling Command: ",MACRO
1097 $! Time to check the contents, and to make sure we get the correct library.
1099 $ IF P4.EQS."SOCKETSHR" .OR. P4.EQS."MULTINET" .OR. P4.EQS."UCX"
1102 $! Check to see if SOCKETSHR was chosen
1104 $ IF P4.EQS."SOCKETSHR"
1107 $! Set the library to use SOCKETSHR
1109 $ TCPIP_LIB = "[-.VMS]SOCKETSHR_SHR.OPT/OPT"
1111 $! Done with SOCKETSHR
1115 $! Check to see if MULTINET was chosen
1117 $ IF P4.EQS."MULTINET"
1120 $! Set the library to use UCX emulation.
1124 $! Done with MULTINET
1128 $! Check to see if UCX was chosen
1133 $! Set the library to use UCX.
1135 $ TCPIP_LIB = "[-.VMS]UCX_SHR_DECC.OPT/OPT"
1136 $ IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
1138 $ TCPIP_LIB = "[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT"
1140 $ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
1141 TCPIP_LIB = "[-.VMS]UCX_SHR_VAXC.OPT/OPT"
1150 $ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
1152 $! Else The User Entered An Invalid Arguement.
1156 $! Tell The User We Don't Know What They Want.
1158 $ WRITE SYS$OUTPUT ""
1159 $ WRITE SYS$OUTPUT "The Option ",P4," Is Invalid. The Valid Options Are:"
1160 $ WRITE SYS$OUTPUT ""
1161 $ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library."
1162 $ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library."
1163 $ WRITE SYS$OUTPUT ""
1169 $! Done with TCP/IP libraries
1173 $! Check if the user wanted to compile just a subset of all the encryption
1178 $ ENCRYPT_TYPES = P6
1181 $! Time To RETURN...
1187 $! Save old value of the logical name OPENSSL
1189 $ __SAVE_OPENSSL = F$TRNLNM("OPENSSL","LNM$PROCESS_TABLE")
1191 $! Save directory information
1193 $ __HERE = F$PARSE(F$PARSE("A.;",F$ENVIRONMENT("PROCEDURE"))-"A.;","[]A.;") - "A.;"
1194 $ __TOP = __HERE - "CRYPTO]"
1195 $ __INCLUDE = __TOP + "INCLUDE.OPENSSL]"
1197 $! Set up the logical name OPENSSL to point at the include directory
1199 $ DEFINE OPENSSL/NOLOG '__INCLUDE'
1207 $! Restore the logical name OPENSSL if it had a value
1209 $ IF __SAVE_OPENSSL .EQS. ""
1213 $ DEFINE/NOLOG OPENSSL '__SAVE_OPENSSL'