]> git.ipfire.org Git - thirdparty/openssl.git/blame - makevms.com
q may be used uninitialised
[thirdparty/openssl.git] / makevms.com
CommitLineData
d02b48c6 1$!
7d7d2cbc
UM
2$! MAKEVMS.COM
3$! Original Author: UNKNOWN
4$! Rewritten By: Robert Byer
5$! Vice-President
6$! A-Com Computing, Inc.
7$! byer@mail.all-net.net
8$!
9$! Changes by Richard Levitte <richard@levitte.org>
10$!
11$! This procedure creates the SSL libraries of "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB"
12$! "[.xxx.EXE.SSL]LIBSSL.OLB" and if specified "[.xxx.EXE.RSAREF]LIBRSAGLUE.OLB".
13$! The "xxx" denotes the machine architecture of AXP or VAX.
14$!
15$! This procedures accepts two command line options listed below.
16$!
17$! Specify one of the following build options for P1.
18$!
19$! ALL Just build "everything".
2e904727 20$! CONFIG Just build the "[.CRYPTO]OPENSSLCONF.H" file.
8c197cc5 21$! BUILDINF Just build the "[.CRYPTO]BUILDINF.H" file.
7d7d2cbc 22$! SOFTLINKS Just fix the Unix soft links.
2e904727 23$! BUILDALL Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done.
7d7d2cbc
UM
24$! RSAREF Just build the "[.xxx.EXE.RSAREF]LIBRSAGLUE.OLB" library.
25$! CRYPTO Just build the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library.
2db90e3a
RL
26$! CRYPTO/x Just build the x part of the
27$! "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library.
7d7d2cbc
UM
28$! SSL Just build the "[.xxx.EXE.SSL]LIBSSL.OLB" library.
29$! SSL_TASK Just build the "[.xxx.EXE.SSL]SSL_TASK.EXE" program.
30$! TEST Just build the "[.xxx.EXE.TEST]" test programs for OpenSSL.
31$! APPS Just build the "[.xxx.EXE.APPS]" application programs for OpenSSL.
32$!
33$!
34$! Specify RSAREF as P2 to compile using the RSAREF Library.
35$! If you specify NORSAREF, it will compile without using RSAREF.
36$! (If in the United States, You Must Compile Using RSAREF).
37$!
38$! Note: The RSAREF libraries are NOT INCLUDED and you have to
39$! download it from "ftp://ftp.rsa.com/rsaref". You have to
40$! get the ".tar-Z" file as the ".zip" file dosen't have the
41$! directory structure stored. You have to extract the file
42$! into the [.RSAREF] directory as that is where the scripts
43$! will look for the files.
44$!
45$! Speficy DEBUG or NODEBUG as P3 to compile with or without debugging
46$! information.
47$!
48$! Specify which compiler at P4 to try to compile under.
49$!
50$! VAXC For VAX C.
51$! DECC For DEC C.
52$! GNUC For GNU C.
53$! LINK To only link the programs from existing object files.
58dc480f 54$! (not yet implemented)
7d7d2cbc
UM
55$!
56$! If you don't speficy a compiler, it will try to determine which
57$! "C" compiler to use.
58$!
b935754c
RL
59$! P5, if defined, sets a TCP/IP library to use, through one of the following
60$! keywords:
7d7d2cbc
UM
61$!
62$! UCX for UCX or UCX emulation
b935754c
RL
63$! TCPIP for TCP/IP Services or TCP/IP Services emulation
64$! (this is prefered over UCX)
7d7d2cbc 65$! SOCKETSHR for SOCKETSHR+NETLIB
b935754c
RL
66$! NONE to avoid specifying which TCP/IP implementation to
67$! use at build time (this works with DEC C). This is
68$! the default.
7d7d2cbc
UM
69$!
70$! P6, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
71$!
72$!
2e904727
RL
73$! Check if we're in a batch job, and make sure we get to
74$! the directory this script is in
75$!
76$ IF F$MODE() .EQS. "BATCH"
77$ THEN
78$ COMNAME=F$ENVIRONMENT("PROCEDURE")
79$ COMPATH=F$PARSE("A.;",COMNAME) - "A.;"
80$ SET DEF 'COMPATH'
81$ ENDIF
82$!
7d7d2cbc
UM
83$! Check Which Architecture We Are Using.
84$!
85$ IF (F$GETSYI("CPU").GE.128)
86$ THEN
87$!
88$! The Architecture Is AXP.
89$!
90$ ARCH := AXP
91$!
92$! Else...
93$!
94$ ELSE
95$!
96$! The Architecture Is VAX.
97$!
98$ ARCH := VAX
99$!
100$! End The Architecture Check.
101$!
102$ ENDIF
103$!
104$! Check To Make Sure We Have Valid Command Line Parameters.
105$!
106$ GOSUB CHECK_OPTIONS
107$!
108$! Check To See What We Are To Do.
109$!
2e904727 110$ IF (BUILDCOMMAND.EQS."ALL")
7d7d2cbc
UM
111$ THEN
112$!
2e904727 113$! Start with building the OpenSSL configuration file.
7d7d2cbc 114$!
2e904727 115$ GOSUB CONFIG
7d7d2cbc 116$!
8c197cc5 117$! Create The "BUILDINF.H" Include File.
7d7d2cbc 118$!
8c197cc5 119$ GOSUB BUILDINF
7d7d2cbc 120$!
2e904727
RL
121$! Fix The Unix Softlinks.
122$!
123$ GOSUB SOFTLINKS
124$!
125$ ENDIF
126$!
127$ IF (BUILDCOMMAND.EQS."ALL".OR.BUILDCOMMAND.EQS."BUILDALL")
128$ THEN
129$!
7d7d2cbc
UM
130$! Check To See If We Are Going To Be Building The
131$! [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library.
132$!
133$ IF (RSAREF.EQS."RSAREF")
134$ THEN
135$!
136$! Build The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library.
137$!
138$ GOSUB RSAREF
139$!
140$! End The RSAREF Check.
141$!
142$ ENDIF
143$!
144$! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
145$!
146$ GOSUB CRYPTO
147$!
148$! Build The [.xxx.EXE.SSL]LIBSSL.OLB Library.
149$!
150$ GOSUB SSL
151$!
152$! Build The [.xxx.EXE.SSL]SSL_TASK.EXE DECNet SSL Engine.
153$!
154$ GOSUB SSL_TASK
155$!
156$! Build The [.xxx.EXE.TEST] OpenSSL Test Utilities.
157$!
158$ GOSUB TEST
159$!
160$! Build The [.xxx.EXE.APPS] OpenSSL Application Utilities.
161$!
162$ GOSUB APPS
163$!
164$! Else...
165$!
166$ ELSE
167$!
168$! Build Just What The User Wants Us To Build.
169$!
2e904727
RL
170$ GOSUB 'BUILDCOMMAND'
171$!
7d7d2cbc
UM
172$ ENDIF
173$!
174$! Time To EXIT.
175$!
2e904727
RL
176$ EXIT
177$!
178$! Rebuild The "[.CRYPTO]OPENSSLCONF.H" file.
179$!
180$ CONFIG:
181$!
182$! Tell The User We Are Creating The [.CRYPTO]OPENSSLCONF.H File.
183$!
184$ WRITE SYS$OUTPUT "Creating [.CRYPTO]OPENSSLCONF.H Include File."
185$!
186$! Create The [.CRYPTO]OPENSSLCONF.H File.
187$!
188$ OPEN/WRITE H_FILE SYS$DISK:[.CRYPTO]OPENSSLCONF.H
189$!
190$! Write The [.CRYPTO]OPENSSLCONF.H File.
191$!
192$ WRITE H_FILE "/* This file was automatically built using makevms.com */"
193$ WRITE H_FILE "/* and [.CRYPTO]OPENSSLCONF.H_IN */"
194$
6525ced5
RL
195$!
196$! Write a few macros that indicate how this system was built.
197$!
198$ WRITE H_FILE ""
199$ WRITE H_FILE "#ifndef OPENSSL_SYS_VMS"
200$ WRITE H_FILE "# define OPENSSL_SYS_VMS"
201$ WRITE H_FILE "#endif"
202$ CONFIG_LOGICALS := NO_ASM,NO_RSA,NO_DSA,NO_DH,NO_MD2,NO_MD5,NO_RIPEMD,-
203 NO_SHA,NO_SHA0,NO_SHA1,NO_DES/NO_MDC2;NO_MDC2,NO_RC2,NO_RC4,NO_RC5,-
204 NO_IDEA,NO_BF,NO_CAST,NO_HMAC,NO_SSL2
205$ CONFIG_LOG_I = 0
206$ CONFIG_LOG_LOOP:
207$ CONFIG_LOG_E1 = F$ELEMENT(CONFIG_LOG_I,",",CONFIG_LOGICALS)
208$ CONFIG_LOG_I = CONFIG_LOG_I + 1
209$ IF CONFIG_LOG_E1 .EQS. "" THEN GOTO CONFIG_LOG_LOOP
210$ IF CONFIG_LOG_E1 .EQS. "," THEN GOTO CONFIG_LOG_LOOP_END
211$ CONFIG_LOG_E2 = F$EDIT(CONFIG_LOG_E1,"TRIM")
212$ CONFIG_LOG_E1 = F$ELEMENT(0,";",CONFIG_LOG_E2)
213$ CONFIG_LOG_E2 = F$ELEMENT(1,";",CONFIG_LOG_E2)
214$ CONFIG_LOG_E0 = F$ELEMENT(0,"/",CONFIG_LOG_E1)
215$ CONFIG_LOG_E1 = F$ELEMENT(1,"/",CONFIG_LOG_E1)
216$ IF F$TRNLNM("OPENSSL_"+CONFIG_LOG_E0)
217$ THEN
218$ WRITE H_FILE "#ifndef OPENSSL_",CONFIG_LOG_E0
219$ WRITE H_FILE "# define OPENSSL_",CONFIG_LOG_E0
220$ WRITE H_FILE "#endif"
221$ IF CONFIG_LOG_E1 .NES. "/"
222$ THEN
223$ WRITE H_FILE "#ifndef OPENSSL_",CONFIG_LOG_E1
224$ WRITE H_FILE "# define OPENSSL_",CONFIG_LOG_E1
225$ WRITE H_FILE "#endif"
226$ ENDIF
227$ ELSE
228$ IF CONFIG_LOG_E2 .NES. ";"
229$ THEN
230$ IF F$TRNLNM("OPENSSL_"+CONFIG_LOG_E2)
231$ THEN
232$ WRITE H_FILE "#ifndef OPENSSL_",CONFIG_LOG_E2
233$ WRITE H_FILE "# define OPENSSL_",CONFIG_LOG_E2
234$ WRITE H_FILE "#endif"
235$ ENDIF
236$ ENDIF
237$ ENDIF
238$ GOTO CONFIG_LOG_LOOP
239$ CONFIG_LOG_LOOP_END:
240$ WRITE H_FILE "#ifndef OPENSSL_THREADS"
241$ WRITE H_FILE "# define OPENSSL_THREADS"
242$ WRITE H_FILE "#endif"
243$ WRITE H_FILE "#ifndef OPENSSL_NO_KRB5"
244$ WRITE H_FILE "# define OPENSSL_NO_KRB5"
245$ WRITE H_FILE "#endif"
246$ WRITE H_FILE ""
247$!
2e904727
RL
248$! Different tar version may have named the file differently
249$ IF F$SEARCH("[.CRYPTO]OPENSSLCONF.H_IN") .NES. ""
250$ THEN
251$ TYPE [.CRYPTO]OPENSSLCONF.H_IN /OUTPUT=H_FILE:
252$ ELSE
253$ IF F$SEARCH("[.CRYPTO]OPENSSLCONF_H.IN") .NES. ""
254$ THEN
255$ TYPE [.CRYPTO]OPENSSLCONF_H.IN /OUTPUT=H_FILE:
256$ ELSE
7b5ffd68
RL
257$ ! For ODS-5
258$ IF F$SEARCH("[.CRYPTO]OPENSSLCONF.H.IN") .NES. ""
259$ THEN
260$ TYPE [.CRYPTO]OPENSSLCONF.H.IN /OUTPUT=H_FILE:
261$ ELSE
262$ WRITE SYS$ERROR "Couldn't find a [.CRYPTO]OPENSSLCONF.H_IN. Exiting!"
263$ EXIT 0
264$ ENDIF
2e904727
RL
265$ ENDIF
266$ ENDIF
2e904727
RL
267$ IF ARCH .EQS. "AXP"
268$ THEN
269$!
270$! Write the Alpha specific data
271$!
272$ WRITE H_FILE "#if defined(HEADER_RC4_H)"
273$ WRITE H_FILE "#undef RC4_INT"
274$ WRITE H_FILE "#define RC4_INT unsigned int"
275$ WRITE H_FILE "#undef RC4_CHUNK"
276$ WRITE H_FILE "#define RC4_CHUNK unsigned long long"
277$ WRITE H_FILE "#endif"
278$!
279$ WRITE H_FILE "#if defined(HEADER_DES_LOCL_H)"
280$ WRITE H_FILE "#undef DES_LONG"
281$ WRITE H_FILE "#define DES_LONG unsigned int"
282$ WRITE H_FILE "#undef DES_PTR"
283$ WRITE H_FILE "#define DES_PTR"
284$ WRITE H_FILE "#undef DES_RISC1"
285$ WRITE H_FILE "#undef DES_RISC2"
286$ WRITE H_FILE "#define DES_RISC1"
287$ WRITE H_FILE "#undef DES_UNROLL"
288$ WRITE H_FILE "#define DES_UNROLL"
289$ WRITE H_FILE "#endif"
290$!
291$ WRITE H_FILE "#if defined(HEADER_BN_H)"
292$ WRITE H_FILE "#undef SIXTY_FOUR_BIT_LONG"
293$ WRITE H_FILE "#undef SIXTY_FOUR_BIT"
5a16d270 294$ WRITE H_FILE "#define SIXTY_FOUR_BIT"
2e904727
RL
295$ WRITE H_FILE "#undef THIRTY_TWO_BIT"
296$ WRITE H_FILE "#undef SIXTEEN_BIT"
297$ WRITE H_FILE "#undef EIGHT_BIT"
298$ WRITE H_FILE "#endif"
62dc5aad
RL
299$
300$ WRITE H_FILE "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION"
2e904727
RL
301$!
302$! Else...
303$!
304$ ELSE
305$!
306$! Write the VAX specific data
307$!
308$ WRITE H_FILE "#if defined(HEADER_RC4_H)"
309$ WRITE H_FILE "#undef RC4_INT"
310$ WRITE H_FILE "#define RC4_INT unsigned char"
311$ WRITE H_FILE "#undef RC4_CHUNK"
312$ WRITE H_FILE "#define RC4_CHUNK unsigned long"
313$ WRITE H_FILE "#endif"
314$!
315$ WRITE H_FILE "#if defined(HEADER_DES_LOCL_H)"
316$ WRITE H_FILE "#undef DES_LONG"
317$ WRITE H_FILE "#define DES_LONG unsigned long"
318$ WRITE H_FILE "#undef DES_PTR"
319$ WRITE H_FILE "#define DES_PTR"
320$ WRITE H_FILE "#undef DES_RISC1"
321$ WRITE H_FILE "#undef DES_RISC2"
322$ WRITE H_FILE "#undef DES_UNROLL"
323$ WRITE H_FILE "#endif"
324$!
325$ WRITE H_FILE "#if defined(HEADER_BN_H)"
326$ WRITE H_FILE "#undef SIXTY_FOUR_BIT_LONG"
327$ WRITE H_FILE "#undef SIXTY_FOUR_BIT"
2e904727 328$ WRITE H_FILE "#undef THIRTY_TWO_BIT"
4cce8244 329$ WRITE H_FILE "#define THIRTY_TWO_BIT"
2e904727
RL
330$ WRITE H_FILE "#undef SIXTEEN_BIT"
331$ WRITE H_FILE "#undef EIGHT_BIT"
332$ WRITE H_FILE "#endif"
62dc5aad
RL
333$
334$ WRITE H_FILE "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION"
335$ WRITE H_FILE "#define OPENSSL_EXPORT_VAR_AS_FUNCTION"
2e904727
RL
336$!
337$! End
338$!
339$ ENDIF
340$!
341$! Close the [.CRYPTO]OPENSSLCONF.H file
342$!
343$ CLOSE H_FILE
344$!
345$! That's All, Time To RETURN.
346$!
347$ RETURN
7d7d2cbc 348$!
8c197cc5 349$! Rebuild The "[.CRYPTO]BUILDINF.H" file.
7d7d2cbc 350$!
8c197cc5 351$ BUILDINF:
7d7d2cbc 352$!
8c197cc5 353$! Tell The User We Are Creating The [.CRYPTO]BUILDINF.H File.
7d7d2cbc 354$!
8c197cc5 355$ WRITE SYS$OUTPUT "Creating [.CRYPTO]BUILDINF.H Include File."
7d7d2cbc 356$!
8c197cc5 357$! Create The [.CRYPTO]BUILDINF.H File.
7d7d2cbc 358$!
8c197cc5 359$ OPEN/WRITE H_FILE SYS$DISK:[.CRYPTO]BUILDINF.H
7d7d2cbc
UM
360$!
361$! Get The Current Date & Time.
362$!
363$ TIME = F$TIME()
364$!
8c197cc5 365$! Write The [.CRYPTO]BUILDINF.H File.
7d7d2cbc 366$!
8c197cc5
UM
367$ WRITE H_FILE "#define CFLAGS """" /* Not filled in for now */"
368$ WRITE H_FILE "#define PLATFORM ""VMS"""
7d7d2cbc
UM
369$ WRITE H_FILE "#define DATE ""''TIME'"" "
370$!
8c197cc5 371$! Close The [.CRYPTO]BUILDINF.H File.
7d7d2cbc
UM
372$!
373$ CLOSE H_FILE
374$!
375$! That's All, Time To RETURN.
376$!
377$ RETURN
378$!
379$! Copy a lot of files around.
380$!
381$ SOFTLINKS:
382$!
383$! Tell The User We Are Partly Rebuilding The [.TEST] Directory.
384$!
b935754c 385$ WRITE SYS$OUTPUT "Rebuilding The '[.APPS]MD4.C', '[.APPS]MD5.C' And '[.APPS]RMD160.C' Files."
7d7d2cbc 386$!
eec79f9b
RL
387$ DELETE SYS$DISK:[.APPS]MD4.C;*,MD5.C;*,RMD160.C;*
388$!
389$! Copy MD4.C from [.CRYPTO.MD4] into [.APPS]
390$!
391$ COPY SYS$DISK:[.CRYPTO.MD4]MD4.C SYS$DISK:[.APPS]
7d7d2cbc
UM
392$!
393$! Copy MD5.C from [.CRYPTO.MD5] into [.APPS]
394$!
395$ COPY SYS$DISK:[.CRYPTO.MD5]MD5.C SYS$DISK:[.APPS]
396$!
397$! Copy RMD160.C from [.CRYPTO.RIPEMD] into [.APPS]
398$!
399$ COPY SYS$DISK:[.CRYPTO.RIPEMD]RMD160.C SYS$DISK:[.APPS]
400$!
401$! Tell The User We Are Partly Rebuilding The [.TEST] Directory.
402$!
403$ WRITE SYS$OUTPUT "Rebuilding The '[.TEST]*.C' Files."
404$!
405$! First, We Have To "Rebuild" The "[.TEST]" Directory, So Delete
406$! All The "C" Files That Are Currently There Now.
407$!
408$ DELETE SYS$DISK:[.TEST]*.C;*
46788970 409$ DELETE SYS$DISK:[.TEST]EVPTESTS.TXT;*
7d7d2cbc
UM
410$!
411$! Copy all the *TEST.C files from [.CRYPTO...] into [.TEST]
412$!
413$ COPY SYS$DISK:[.CRYPTO.*]%*TEST.C SYS$DISK:[.TEST]
46788970 414$ COPY SYS$DISK:[.CRYPTO.EVP]EVPTESTS.TXT SYS$DISK:[.TEST]
7d7d2cbc
UM
415$!
416$! Copy all the *TEST.C files from [.SSL...] into [.TEST]
417$!
418$ COPY SYS$DISK:[.SSL]%*TEST.C SYS$DISK:[.TEST]
419$!
420$! Tell The User We Are Rebuilding The [.INCLUDE.OPENSSL] Directory.
421$!
422$ WRITE SYS$OUTPUT "Rebuilding The '[.INCLUDE.OPENSSL]' Directory."
423$!
424$! First, make sure the directory exists
425$!
426$ IF F$PARSE("SYS$DISK:[.INCLUDE.OPENSSL]") .EQS. "" THEN -
427 CREATE/DIRECTORY SYS$DISK:[.INCLUDE.OPENSSL]
428$!
429$! Copy All The ".H" Files From The Main Directory.
430$!
41d2a336 431$ EXHEADER := e_os2.h
7d7d2cbc
UM
432$ COPY 'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
433$!
434$! Copy All The ".H" Files From The [.CRYPTO] Directory Tree.
435$!
eec79f9b 436$ SDIRS := ,MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,-
7d7d2cbc 437 DES,RC2,RC4,RC5,IDEA,BF,CAST,-
4705bd9b 438 BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,AES,-
7d7d2cbc 439 BUFFER,BIO,STACK,LHASH,RAND,ERR,OBJECTS,-
114697be 440 EVP,ASN1,PEM,X509,X509V3,CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI,KRB5
e32587d5 441$ EXHEADER_ := crypto.h,tmdiff.h,opensslv.h,opensslconf.h,ebcdic.h,symhacks.h,-
114697be 442 ossl_typ.h
7d7d2cbc 443$ EXHEADER_MD2 := md2.h
eec79f9b 444$ EXHEADER_MD4 := md4.h
7d7d2cbc
UM
445$ EXHEADER_MD5 := md5.h
446$ EXHEADER_SHA := sha.h
447$ EXHEADER_MDC2 := mdc2.h
448$ EXHEADER_HMAC := hmac.h
449$ EXHEADER_RIPEMD := ripemd.h
c2e4f17c 450$ EXHEADER_DES := des.h,des_old.h
7d7d2cbc
UM
451$ EXHEADER_RC2 := rc2.h
452$ EXHEADER_RC4 := rc4.h
453$ EXHEADER_RC5 := rc5.h
454$ EXHEADER_IDEA := idea.h
455$ EXHEADER_BF := blowfish.h
456$ EXHEADER_CAST := cast.h
457$ EXHEADER_BN := bn.h
9bd35f63 458$ EXHEADER_EC := ec.h
7d7d2cbc
UM
459$ EXHEADER_RSA := rsa.h
460$ EXHEADER_DSA := dsa.h
1f4eada3 461$ EXHEADER_ECDSA := ecdsa.h
7d7d2cbc 462$ EXHEADER_DH := dh.h
4705bd9b 463$ EXHEADER_ECDH := ecdh.h
eec79f9b 464$ EXHEADER_DSO := dso.h
5270e702 465$ EXHEADER_ENGINE := engine.h
6f9079fd 466$ EXHEADER_AES := aes.h
7d7d2cbc
UM
467$ EXHEADER_BUFFER := buffer.h
468$ EXHEADER_BIO := bio.h
469$ EXHEADER_STACK := stack.h,safestack.h
470$ EXHEADER_LHASH := lhash.h
471$ EXHEADER_RAND := rand.h
472$ EXHEADER_ERR := err.h
eec79f9b 473$ EXHEADER_OBJECTS := objects.h,obj_mac.h
7d7d2cbc 474$ EXHEADER_EVP := evp.h
66a0def8 475$ EXHEADER_ASN1 := asn1.h,asn1_mac.h,asn1t.h
7d7d2cbc
UM
476$ EXHEADER_PEM := pem.h,pem2.h
477$ EXHEADER_X509 := x509.h,x509_vfy.h
478$ EXHEADER_X509V3 := x509v3.h
4b88270b 479$ EXHEADER_CONF := conf.h,conf_api.h
7d7d2cbc
UM
480$ EXHEADER_TXT_DB := txt_db.h
481$ EXHEADER_PKCS7 := pkcs7.h
482$ EXHEADER_PKCS12 := pkcs12.h
483$ EXHEADER_COMP := comp.h
6525ced5 484$ EXHEADER_OCSP := ocsp.h
81b31b70 485$ EXHEADER_UI := ui.h,ui_compat.h
114697be 486$ EXHEADER_KRB5 := krb5_asn.h
7d7d2cbc
UM
487$
488$ I = 0
489$ LOOP_SDIRS:
490$ D = F$EDIT(F$ELEMENT(I, ",", SDIRS),"TRIM")
491$ I = I + 1
492$ IF D .EQS. "," THEN GOTO LOOP_SDIRS_END
493$ tmp = EXHEADER_'D'
494$ IF D .EQS. ""
495$ THEN
4f07317f 496$ COPY [.CRYPTO]'tmp' SYS$DISK:[.INCLUDE.OPENSSL] !/LOG
7d7d2cbc 497$ ELSE
4f07317f 498$ COPY [.CRYPTO.'D']'tmp' SYS$DISK:[.INCLUDE.OPENSSL] !/LOG
7d7d2cbc
UM
499$ ENDIF
500$ GOTO LOOP_SDIRS
501$ LOOP_SDIRS_END:
502$!
503$! Copy All The ".H" Files From The [.RSAREF] Directory.
504$!
ccb9643f
RL
505$! EXHEADER := rsaref.h
506$! COPY SYS$DISK:[.RSAREF]'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
7d7d2cbc
UM
507$!
508$! Copy All The ".H" Files From The [.SSL] Directory.
509$!
66a0def8 510$ EXHEADER := ssl.h,ssl2.h,ssl3.h,ssl23.h,tls1.h,kssl.h
7d7d2cbc
UM
511$ COPY SYS$DISK:[.SSL]'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
512$!
513$! Purge all doubles
514$!
515$ PURGE SYS$DISK:[.INCLUDE.OPENSSL]*.H
516$!
517$! That's All, Time To RETURN.
518$!
519$ RETURN
520$!
521$! Build The "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" Library.
522$!
523$ CRYPTO:
524$!
525$! Tell The User What We Are Doing.
526$!
527$ WRITE SYS$OUTPUT ""
528$ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.CRYPTO]LIBCRYPTO.OLB Library."
529$!
530$! Go To The [.CRYPTO] Directory.
531$!
532$ SET DEFAULT SYS$DISK:[.CRYPTO]
533$!
534$! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
535$!
2db90e3a 536$ @CRYPTO-LIB LIBRARY 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" "''ISSEVEN'" "''BUILDPART'"
7be760be
RL
537$!
538$! Build The [.xxx.EXE.CRYPTO]*.EXE Test Applications.
539$!
540$ @CRYPTO-LIB APPS 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
7d7d2cbc
UM
541$!
542$! Go Back To The Main Directory.
543$!
544$ SET DEFAULT [-]
545$!
546$! Time To RETURN.
547$!
548$ RETURN
549$!
550$! Build The [.xxx.EXE.RSAREF]LIBRSAGLUE Library.
551$!
552$ RSAREF:
ccb9643f
RL
553$ WRITE SYS$OUTPUT ""
554$ WRITE SYS$OUTPUT "RSAref glue library not built, since it's no longer needed"
555$ RETURN
7d7d2cbc
UM
556$!
557$! Tell The User What We Are Doing.
558$!
559$ WRITE SYS$OUTPUT ""
560$ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.RSAREF]LIBRSAGLUE.OLB Library."
561$!
562$! Go To The [.RSAREF] Directory.
563$!
564$ SET DEFAULT SYS$DISK:[.RSAREF]
565$!
566$! Build The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library.
567$!
568$ @RSAREF-LIB LIBRARY 'DEBUGGER' "''COMPILER'" 'ISSEVEN'
569$!
570$! Go Back To The Main Directory.
571$!
572$ SET DEFAULT [-]
573$!
574$! Time To Return.
575$!
576$ RETURN
577$!
578$! Build The "[.xxx.EXE.SSL]LIBSSL.OLB" Library.
579$!
580$ SSL:
581$!
582$! Tell The User What We Are Doing.
583$!
584$ WRITE SYS$OUTPUT ""
585$ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.SSL]LIBSSL.OLB Library."
586$!
587$! Go To The [.SSL] Directory.
588$!
589$ SET DEFAULT SYS$DISK:[.SSL]
590$!
591$! Build The [.xxx.EXE.SSL]LIBSSL.OLB Library.
592$!
593$ @SSL-LIB LIBRARY 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
594$!
595$! Go Back To The Main Directory.
596$!
597$ SET DEFAULT [-]
598$!
599$! Time To Return.
600$!
601$ RETURN
602$!
603$! Build The "[.xxx.EXE.SSL]SSL_TASK.EXE" Program.
604$!
605$ SSL_TASK:
606$!
607$! Tell The User What We Are Doing.
608$!
609$ WRITE SYS$OUTPUT ""
610$ WRITE SYS$OUTPUT "Building DECNet Based SSL Engine, [.",ARCH,".EXE.SSL]SSL_TASK.EXE"
611$!
612$! Go To The [.SSL] Directory.
613$!
614$ SET DEFAULT SYS$DISK:[.SSL]
615$!
616$! Build The [.xxx.EXE.SSL]SSL_TASK.EXE
617$!
618$ @SSL-LIB SSL_TASK 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
619$!
620$! Go Back To The Main Directory.
621$!
622$ SET DEFAULT [-]
623$!
624$! That's All, Time To RETURN.
625$!
626$ RETURN
627$!
628$! Build The OpenSSL Test Programs.
629$!
630$ TEST:
631$!
632$! Tell The User What We Are Doing.
633$!
634$ WRITE SYS$OUTPUT ""
635$ WRITE SYS$OUTPUT "Building The OpenSSL [.",ARCH,".EXE.TEST] Test Utilities."
636$!
637$! Go To The [.TEST] Directory.
638$!
639$ SET DEFAULT SYS$DISK:[.TEST]
640$!
641$! Build The Test Programs.
642$!
643$ @MAKETESTS 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
644$!
645$! Go Back To The Main Directory.
646$!
647$ SET DEFAULT [-]
648$!
649$! That's All, Time To RETURN.
650$!
651$ RETURN
652$!
653$! Build The OpenSSL Application Programs.
654$!
655$ APPS:
656$!
657$! Tell The User What We Are Doing.
658$!
659$ WRITE SYS$OUTPUT ""
660$ WRITE SYS$OUTPUT "Building OpenSSL [.",ARCH,".EXE.APPS] Applications."
661$!
662$! Go To The [.APPS] Directory.
663$!
664$ SET DEFAULT SYS$DISK:[.APPS]
665$!
666$! Build The Application Programs.
667$!
668$ @MAKEAPPS 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
669$!
670$! Go Back To The Main Directory.
671$!
672$ SET DEFAULT [-]
673$!
674$! That's All, Time To RETURN.
675$!
676$ RETURN
677$!
678$! Check The User's Options.
679$!
680$ CHECK_OPTIONS:
681$!
2db90e3a
RL
682$! Check if there's a "part", and separate it out
683$!
684$ BUILDPART = F$ELEMENT(1,"/",P1)
685$ IF BUILDPART .EQS. "/"
686$ THEN
687$ BUILDPART = ""
688$ ELSE
689$ P1 = F$EXTRACT(0,F$LENGTH(P1) - F$LENGTH(BUILDPART) - 1, P1)
690$ ENDIF
691$!
7d7d2cbc
UM
692$! Check To See If P1 Is Blank.
693$!
694$ IF (P1.EQS."ALL")
695$ THEN
696$!
697$! P1 Is ALL, So Build Everything.
698$!
2e904727 699$ BUILDCOMMAND = "ALL"
7d7d2cbc
UM
700$!
701$! Else...
702$!
703$ ELSE
704$!
705$! Else, Check To See If P1 Has A Valid Arguement.
706$!
e33f347a
RL
707$ IF (P1.EQS."CONFIG").OR.(P1.EQS."BUILDINF").OR.(P1.EQS."SOFTLINKS") -
708 .OR.(P1.EQS."BUILDALL") -
709 .OR.(P1.EQS."CRYPTO").OR.(P1.EQS."SSL").OR.(P1.EQS."RSAREF") -
710 .OR.(P1.EQS."SSL_TASK").OR.(P1.EQS."TEST").OR.(P1.EQS."APPS")
7d7d2cbc
UM
711$ THEN
712$!
713$! A Valid Arguement.
714$!
2e904727 715$ BUILDCOMMAND = P1
7d7d2cbc
UM
716$!
717$! Else...
718$!
719$ ELSE
720$!
721$! Tell The User We Don't Know What They Want.
722$!
723$ WRITE SYS$OUTPUT ""
724$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
725$ WRITE SYS$OUTPUT ""
726$ WRITE SYS$OUTPUT " ALL : Just Build Everything."
2e904727 727$ WRITE SYS$OUTPUT " CONFIG : Just build the [.CRYPTO]OPENSSLCONF.H file."
8c197cc5 728$ WRITE SYS$OUTPUT " BUILDINF : Just build the [.CRYPTO]BUILDINF.H file."
7d7d2cbc 729$ WRITE SYS$OUTPUT " SOFTLINKS: Just Fix The Unix soft links."
2e904727 730$ WRITE SYS$OUTPUT " BUILDALL : Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done."
7d7d2cbc 731$ WRITE SYS$OUTPUT " CRYPTO : To Build Just The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library."
2db90e3a
RL
732$ WRITE SYS$OUTPUT " CRYPTO/x : To Build Just The x Part Of The"
733$ WRITE SYS$OUTPUT " [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library."
7d7d2cbc
UM
734$ WRITE SYS$OUTPUT " SSL : To Build Just The [.xxx.EXE.SSL]LIBSSL.OLB Library."
735$ WRITE SYS$OUTPUT " SSL_TASK : To Build Just The [.xxx.EXE.SSL]SSL_TASK.EXE Program."
736$ WRITE SYS$OUTPUT " TEST : To Build Just The OpenSSL Test Programs."
737$ WRITE SYS$OUTPUT " APPS : To Build Just The OpenSSL Application Programs."
738$ WRITE SYS$OUTPUT ""
739$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
740$ WRITE SYS$OUTPUT ""
741$ WRITE SYS$OUTPUT " AXP : Alpha Architecture."
742$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
743$ WRITE SYS$OUTPUT ""
744$!
745$! Time To EXIT.
746$!
747$ EXIT
748$!
749$! End The Valid Argument Check.
750$!
751$ ENDIF
752$!
753$! End The P1 Check.
754$!
755$ ENDIF
756$!
757$! Check To See If P2 Is Blank.
758$!
ccb9643f 759$ P2 = "NORSAREF"
7d7d2cbc
UM
760$ IF (P2.EQS."NORSAREF")
761$ THEN
762$!
763$! P2 Is NORSAREF, So Compile Without RSAREF.
764$!
765$ RSAREF = "NORSAREF"
766$!
767$! Else...
768$!
769$ ELSE
770$!
771$! Check To See If We Are To Compile Using The RSAREF Library.
772$!
773$ IF (P2.EQS."RSAREF")
774$ THEN
775$!
776$! Compile With RSAREF Library.
777$!
778$ RSAREF = "RSAREF"
779$!
780$! Else...
781$!
782$ ELSE
783$!
784$! Tell The User Entered An Invalid Option..
785$!
786$ WRITE SYS$OUTPUT ""
787$ WRITE SYS$OUTPUT "The Option ",P2," Is Invalid. The Valid Options Are:"
788$ WRITE SYS$OUTPUT ""
789$ WRITE SYS$OUTPUT " RSAREF : To Compile With The RSAREF Library."
790$ WRITE SYS$OUTPUT " NORSAREF : To Compile With The Regular RSA Library."
791$ WRITE SYS$OUTPUT ""
792$!
793$! Time To EXIT.
794$!
795$ EXIT
796$!
797$! End The Valid Arguemnt Check.
798$!
799$ ENDIF
800$!
801$! End The P2 Check.
802$!
803$ ENDIF
804$!
805$! Check To See If P3 Is Blank.
806$!
807$ IF (P3.EQS."NODEBUG")
808$ THEN
809$!
810$! P3 Is NODEBUG, So Compile Without Debugger Information.
811$!
812$ DEBUGGER = "NODEBUG"
813$!
814$! Else...
815$!
816$ ELSE
817$!
818$! Check To See If We Are To Compile With Debugger Information.
819$!
820$ IF (P3.EQS."DEBUG")
821$ THEN
822$!
823$! Compile With Debugger Information.
824$!
825$ DEBUGGER = "DEBUG"
826$!
827$! Else...
828$!
829$ ELSE
830$!
831$! Tell The User Entered An Invalid Option..
832$!
833$ WRITE SYS$OUTPUT ""
834$ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:"
835$ WRITE SYS$OUTPUT ""
836$ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information."
837$ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information."
838$ WRITE SYS$OUTPUT ""
839$!
840$! Time To EXIT.
841$!
842$ EXIT
843$!
844$! End The Valid Arguement Check.
845$!
846$ ENDIF
847$!
848$! End The P3 Check.
849$!
850$ ENDIF
851$!
852$! Check To See If P4 Is Blank.
853$!
854$ IF (P4.EQS."")
855$ THEN
856$!
857$! O.K., The User Didn't Specify A Compiler, Let's Try To
858$! Find Out Which One To Use.
859$!
860$! Check To See If We Have GNU C.
861$!
862$ IF (F$TRNLNM("GNU_CC").NES."")
863$ THEN
864$!
865$! Looks Like GNUC, Set To Use GNUC.
866$!
867$ COMPILER = "GNUC"
868$!
869$! Tell The User We Are Using GNUC.
870$!
871$ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
872$!
873$! End The GNU C Compiler Check.
874$!
875$ ENDIF
876$!
877$! Check To See If We Have VAXC Or DECC.
878$!
879$ IF (F$GETSYI("CPU").GE.128).OR.(F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC")
880$ THEN
881$!
882$! Looks Like DECC, Set To Use DECC.
883$!
884$ COMPILER = "DECC"
885$!
886$! Tell The User We Are Using DECC.
887$!
888$ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
889$!
890$! Else...
891$!
892$ ELSE
893$!
894$! Looks Like VAXC, Set To Use VAXC.
895$!
896$ COMPILER = "VAXC"
897$!
898$! Tell The User We Are Using VAX C.
899$!
900$ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
901$!
902$! End The DECC & VAXC Compiler Check.
903$!
904$ ENDIF
905$!
906$! Else...
907$!
908$ ELSE
909$!
910$! Check To See If The User Entered A Valid Paramter.
911$!
58dc480f 912$ IF (P4.EQS."VAXC").OR.(P4.EQS."DECC").OR.(P4.EQS."GNUC")!.OR.(P4.EQS."LINK")
7d7d2cbc
UM
913$ THEN
914$!
915$! Check To See If The User Wanted To Just LINK.
916$!
917$ IF (P4.EQS."LINK")
918$ THEN
919$!
920$! Looks Like LINK-only
921$!
922$ COMPILER = "LINK"
923$!
924$! Tell The User We Are Only Linking.
925$!
926$ WRITE SYS$OUTPUT "LINK Only. This actually NOT YET SUPPORTED!"
927$!
928$! End LINK Check.
929$!
930$ ENDIF
931$!
932$! Check To See If The User Wanted DECC.
933$!
934$ IF (P4.EQS."DECC")
935$ THEN
936$!
937$! Looks Like DECC, Set To Use DECC.
938$!
939$ COMPILER = "DECC"
940$!
941$! Tell The User We Are Using DECC.
942$!
943$ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
944$!
945$! End DECC Check.
946$!
947$ ENDIF
948$!
949$! Check To See If We Are To Use VAXC.
950$!
951$ IF (P4.EQS."VAXC")
952$ THEN
953$!
954$! Looks Like VAXC, Set To Use VAXC.
955$!
956$ COMPILER = "VAXC"
957$!
958$! Tell The User We Are Using VAX C.
959$!
960$ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
961$!
962$! End VAXC Check
963$!
964$ ENDIF
965$!
966$! Check To See If We Are To Use GNU C.
967$!
968$ IF (P4.EQS."GNUC")
969$ THEN
970$!
971$! Looks Like GNUC, Set To Use GNUC.
972$!
973$ COMPILER = "GNUC"
974$!
975$! Tell The User We Are Using GNUC.
976$!
977$ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
978$!
979$! End The GNU C Check.
980$!
981$ ENDIF
982$!
983$! Else The User Entered An Invalid Arguement.
984$!
985$ ELSE
986$!
987$! Tell The User We Don't Know What They Want.
988$!
989$ WRITE SYS$OUTPUT ""
990$ WRITE SYS$OUTPUT "The Option ",P4," Is Invalid. The Valid Options Are:"
991$ WRITE SYS$OUTPUT ""
992$ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C."
993$ WRITE SYS$OUTPUT " DECC : To Compile With DEC C."
994$ WRITE SYS$OUTPUT " GNUC : To Compile With GNU C."
995$ WRITE SYS$OUTPUT ""
996$!
997$! Time To EXIT.
998$!
999$ EXIT
1000$!
1001$! End The Valid Arguement Check.
1002$!
1003$ ENDIF
1004$!
1005$! End The P4 Check.
1006$!
1007$ ENDIF
1008$!
1009$! Time to check the contents of P5, and to make sure we get the correct library.
1010$!
b935754c
RL
1011$ IF P5.EQS."SOCKETSHR" .OR. P5.EQS."MULTINET" .OR. P5.EQS."UCX" -
1012 .OR. P5.EQS."TCPIP" .OR. P5.EQS."NONE"
7d7d2cbc
UM
1013$ THEN
1014$!
1015$! Check to see if SOCKETSHR was chosen
1016$!
1017$ IF P5.EQS."SOCKETSHR"
1018$ THEN
1019$!
1020$! Set the library to use SOCKETSHR
1021$!
b935754c 1022$ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT"
7d7d2cbc
UM
1023$!
1024$! Tell the user
1025$!
1026$ WRITE SYS$OUTPUT "Using SOCKETSHR for TCP/IP"
1027$!
1028$! Done with SOCKETSHR
1029$!
1030$ ENDIF
1031$!
1032$! Check to see if MULTINET was chosen
1033$!
1034$ IF P5.EQS."MULTINET"
1035$ THEN
1036$!
1037$! Set the library to use UCX emulation.
1038$!
1039$ P5 = "UCX"
1040$!
1041$! Tell the user
1042$!
1043$ WRITE SYS$OUTPUT "Using MultiNet via UCX emulation for TCP/IP"
1044$!
1045$! Done with MULTINET
1046$!
1047$ ENDIF
1048$!
1049$! Check to see if UCX was chosen
1050$!
1051$ IF P5.EQS."UCX"
1052$ THEN
1053$!
1054$! Set the library to use UCX.
1055$!
b935754c 1056$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT"
7d7d2cbc
UM
1057$!
1058$! Tell the user
1059$!
1060$ WRITE SYS$OUTPUT "Using UCX or an emulation thereof for TCP/IP"
1061$!
1062$! Done with UCX
1063$!
1064$ ENDIF
1065$!
b935754c
RL
1066$! Check to see if TCPIP was chosen
1067$!
1068$ IF P5.EQS."TCPIP"
1069$ THEN
1070$!
1071$! Set the library to use TCPIP (post UCX).
1072$!
1073$ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT"
1074$!
1075$! Tell the user
1076$!
1077$ WRITE SYS$OUTPUT "Using TCPIP (post UCX) for TCP/IP"
1078$!
1079$! Done with TCPIP
1080$!
1081$ ENDIF
1082$!
1083$! Check to see if NONE was chosen
1084$!
1085$ IF P5.EQS."NONE"
1086$ THEN
1087$!
1088$! Do not use a TCPIP library.
1089$!
1090$ TCPIP_LIB = ""
1091$!
1092$! Tell the user
1093$!
1094$ WRITE SYS$OUTPUT "A specific TCPIP library will not be used."
1095$!
1096$! Done with NONE.
1097$!
1098$ ENDIF
1099$!
7d7d2cbc
UM
1100$! Set the TCPIP_TYPE symbol
1101$!
1102$ TCPIP_TYPE = P5
1103$!
1104$! Print info
1105$!
1106$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
1107$!
1108$! Else The User Entered An Invalid Arguement.
1109$!
1110$ ELSE
1111$ IF P5 .NES. ""
1112$ THEN
1113$!
1114$! Tell The User We Don't Know What They Want.
1115$!
1116$ WRITE SYS$OUTPUT ""
1117$ WRITE SYS$OUTPUT "The Option ",P5," Is Invalid. The Valid Options Are:"
1118$ WRITE SYS$OUTPUT ""
1119$ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library."
1120$ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library."
b935754c
RL
1121$ WRITE SYS$OUTPUT " TCPIP : To link with TCPIP TCP/IP (post UCX) library."
1122$ WRITE SYS$OUTPUT " NONE : To not link with a specific TCP/IP library."
7d7d2cbc
UM
1123$ WRITE SYS$OUTPUT ""
1124$!
1125$! Time To EXIT.
1126$!
1127$ EXIT
1128$ ELSE
1129$!
b935754c
RL
1130$! If TCPIP is not defined, then hardcode it to make
1131$! it clear that no TCPIP is desired.
1132$!
1133$ IF P5 .EQS. ""
1134$ THEN
1135$ TCPIP_LIB = ""
1136$ TCPIP_TYPE = "NONE"
1137$ ELSE
1138$!
7d7d2cbc
UM
1139$! Set the TCPIP_TYPE symbol
1140$!
b935754c
RL
1141$ TCPIP_TYPE = P5
1142$ ENDIF
7d7d2cbc
UM
1143$ ENDIF
1144$!
1145$! Done with TCP/IP libraries
1146$!
1147$ ENDIF
1148$!
1149$! Special Threads For OpenVMS v7.1 Or Later
1150$!
1151$! Written By: Richard Levitte
1152$! richard@levitte.org
1153$!
1154$!
1155$! Check To See If We Have A Option For P6.
1156$!
1157$ IF (P6.EQS."")
1158$ THEN
1159$!
1160$! Get The Version Of VMS We Are Using.
1161$!
1162$ ISSEVEN :=
1163$ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION")))
1164$ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
1165$!
1166$! Check To See If The VMS Version Is v7.1 Or Later.
1167$!
1168$ IF (TMP.GE.71)
1169$ THEN
1170$!
1171$! We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
1172$!
1173$ ISSEVEN := ,PTHREAD_USE_D4
1174$!
1175$! End The VMS Version Check.
1176$!
1177$ ENDIF
1178$!
1179$! End The P6 Check.
1180$!
1181$ ENDIF
1182$!
1183$! Time To RETURN...
1184$!
1185$ RETURN