]> git.ipfire.org Git - thirdparty/openssl.git/blame - makevms.com
Synchronise with Unix.
[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,-
1f4eada3 438 BN,EC,RSA,DSA,ECDSA,DH,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
eec79f9b 463$ EXHEADER_DSO := dso.h
5270e702 464$ EXHEADER_ENGINE := engine.h
6f9079fd 465$ EXHEADER_AES := aes.h
7d7d2cbc
UM
466$ EXHEADER_BUFFER := buffer.h
467$ EXHEADER_BIO := bio.h
468$ EXHEADER_STACK := stack.h,safestack.h
469$ EXHEADER_LHASH := lhash.h
470$ EXHEADER_RAND := rand.h
471$ EXHEADER_ERR := err.h
eec79f9b 472$ EXHEADER_OBJECTS := objects.h,obj_mac.h
7d7d2cbc 473$ EXHEADER_EVP := evp.h
66a0def8 474$ EXHEADER_ASN1 := asn1.h,asn1_mac.h,asn1t.h
7d7d2cbc
UM
475$ EXHEADER_PEM := pem.h,pem2.h
476$ EXHEADER_X509 := x509.h,x509_vfy.h
477$ EXHEADER_X509V3 := x509v3.h
4b88270b 478$ EXHEADER_CONF := conf.h,conf_api.h
7d7d2cbc
UM
479$ EXHEADER_TXT_DB := txt_db.h
480$ EXHEADER_PKCS7 := pkcs7.h
481$ EXHEADER_PKCS12 := pkcs12.h
482$ EXHEADER_COMP := comp.h
6525ced5 483$ EXHEADER_OCSP := ocsp.h
81b31b70 484$ EXHEADER_UI := ui.h,ui_compat.h
114697be 485$ EXHEADER_KRB5 := krb5_asn.h
7d7d2cbc
UM
486$
487$ I = 0
488$ LOOP_SDIRS:
489$ D = F$EDIT(F$ELEMENT(I, ",", SDIRS),"TRIM")
490$ I = I + 1
491$ IF D .EQS. "," THEN GOTO LOOP_SDIRS_END
492$ tmp = EXHEADER_'D'
493$ IF D .EQS. ""
494$ THEN
4f07317f 495$ COPY [.CRYPTO]'tmp' SYS$DISK:[.INCLUDE.OPENSSL] !/LOG
7d7d2cbc 496$ ELSE
4f07317f 497$ COPY [.CRYPTO.'D']'tmp' SYS$DISK:[.INCLUDE.OPENSSL] !/LOG
7d7d2cbc
UM
498$ ENDIF
499$ GOTO LOOP_SDIRS
500$ LOOP_SDIRS_END:
501$!
502$! Copy All The ".H" Files From The [.RSAREF] Directory.
503$!
ccb9643f
RL
504$! EXHEADER := rsaref.h
505$! COPY SYS$DISK:[.RSAREF]'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
7d7d2cbc
UM
506$!
507$! Copy All The ".H" Files From The [.SSL] Directory.
508$!
66a0def8 509$ EXHEADER := ssl.h,ssl2.h,ssl3.h,ssl23.h,tls1.h,kssl.h
7d7d2cbc
UM
510$ COPY SYS$DISK:[.SSL]'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
511$!
512$! Purge all doubles
513$!
514$ PURGE SYS$DISK:[.INCLUDE.OPENSSL]*.H
515$!
516$! That's All, Time To RETURN.
517$!
518$ RETURN
519$!
520$! Build The "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" Library.
521$!
522$ CRYPTO:
523$!
524$! Tell The User What We Are Doing.
525$!
526$ WRITE SYS$OUTPUT ""
527$ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.CRYPTO]LIBCRYPTO.OLB Library."
528$!
529$! Go To The [.CRYPTO] Directory.
530$!
531$ SET DEFAULT SYS$DISK:[.CRYPTO]
532$!
533$! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
534$!
2db90e3a 535$ @CRYPTO-LIB LIBRARY 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" "''ISSEVEN'" "''BUILDPART'"
7be760be
RL
536$!
537$! Build The [.xxx.EXE.CRYPTO]*.EXE Test Applications.
538$!
539$ @CRYPTO-LIB APPS 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
7d7d2cbc
UM
540$!
541$! Go Back To The Main Directory.
542$!
543$ SET DEFAULT [-]
544$!
545$! Time To RETURN.
546$!
547$ RETURN
548$!
549$! Build The [.xxx.EXE.RSAREF]LIBRSAGLUE Library.
550$!
551$ RSAREF:
ccb9643f
RL
552$ WRITE SYS$OUTPUT ""
553$ WRITE SYS$OUTPUT "RSAref glue library not built, since it's no longer needed"
554$ RETURN
7d7d2cbc
UM
555$!
556$! Tell The User What We Are Doing.
557$!
558$ WRITE SYS$OUTPUT ""
559$ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.RSAREF]LIBRSAGLUE.OLB Library."
560$!
561$! Go To The [.RSAREF] Directory.
562$!
563$ SET DEFAULT SYS$DISK:[.RSAREF]
564$!
565$! Build The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library.
566$!
567$ @RSAREF-LIB LIBRARY 'DEBUGGER' "''COMPILER'" 'ISSEVEN'
568$!
569$! Go Back To The Main Directory.
570$!
571$ SET DEFAULT [-]
572$!
573$! Time To Return.
574$!
575$ RETURN
576$!
577$! Build The "[.xxx.EXE.SSL]LIBSSL.OLB" Library.
578$!
579$ SSL:
580$!
581$! Tell The User What We Are Doing.
582$!
583$ WRITE SYS$OUTPUT ""
584$ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.SSL]LIBSSL.OLB Library."
585$!
586$! Go To The [.SSL] Directory.
587$!
588$ SET DEFAULT SYS$DISK:[.SSL]
589$!
590$! Build The [.xxx.EXE.SSL]LIBSSL.OLB Library.
591$!
592$ @SSL-LIB LIBRARY 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
593$!
594$! Go Back To The Main Directory.
595$!
596$ SET DEFAULT [-]
597$!
598$! Time To Return.
599$!
600$ RETURN
601$!
602$! Build The "[.xxx.EXE.SSL]SSL_TASK.EXE" Program.
603$!
604$ SSL_TASK:
605$!
606$! Tell The User What We Are Doing.
607$!
608$ WRITE SYS$OUTPUT ""
609$ WRITE SYS$OUTPUT "Building DECNet Based SSL Engine, [.",ARCH,".EXE.SSL]SSL_TASK.EXE"
610$!
611$! Go To The [.SSL] Directory.
612$!
613$ SET DEFAULT SYS$DISK:[.SSL]
614$!
615$! Build The [.xxx.EXE.SSL]SSL_TASK.EXE
616$!
617$ @SSL-LIB SSL_TASK 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
618$!
619$! Go Back To The Main Directory.
620$!
621$ SET DEFAULT [-]
622$!
623$! That's All, Time To RETURN.
624$!
625$ RETURN
626$!
627$! Build The OpenSSL Test Programs.
628$!
629$ TEST:
630$!
631$! Tell The User What We Are Doing.
632$!
633$ WRITE SYS$OUTPUT ""
634$ WRITE SYS$OUTPUT "Building The OpenSSL [.",ARCH,".EXE.TEST] Test Utilities."
635$!
636$! Go To The [.TEST] Directory.
637$!
638$ SET DEFAULT SYS$DISK:[.TEST]
639$!
640$! Build The Test Programs.
641$!
642$ @MAKETESTS 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
643$!
644$! Go Back To The Main Directory.
645$!
646$ SET DEFAULT [-]
647$!
648$! That's All, Time To RETURN.
649$!
650$ RETURN
651$!
652$! Build The OpenSSL Application Programs.
653$!
654$ APPS:
655$!
656$! Tell The User What We Are Doing.
657$!
658$ WRITE SYS$OUTPUT ""
659$ WRITE SYS$OUTPUT "Building OpenSSL [.",ARCH,".EXE.APPS] Applications."
660$!
661$! Go To The [.APPS] Directory.
662$!
663$ SET DEFAULT SYS$DISK:[.APPS]
664$!
665$! Build The Application Programs.
666$!
667$ @MAKEAPPS 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
668$!
669$! Go Back To The Main Directory.
670$!
671$ SET DEFAULT [-]
672$!
673$! That's All, Time To RETURN.
674$!
675$ RETURN
676$!
677$! Check The User's Options.
678$!
679$ CHECK_OPTIONS:
680$!
2db90e3a
RL
681$! Check if there's a "part", and separate it out
682$!
683$ BUILDPART = F$ELEMENT(1,"/",P1)
684$ IF BUILDPART .EQS. "/"
685$ THEN
686$ BUILDPART = ""
687$ ELSE
688$ P1 = F$EXTRACT(0,F$LENGTH(P1) - F$LENGTH(BUILDPART) - 1, P1)
689$ ENDIF
690$!
7d7d2cbc
UM
691$! Check To See If P1 Is Blank.
692$!
693$ IF (P1.EQS."ALL")
694$ THEN
695$!
696$! P1 Is ALL, So Build Everything.
697$!
2e904727 698$ BUILDCOMMAND = "ALL"
7d7d2cbc
UM
699$!
700$! Else...
701$!
702$ ELSE
703$!
704$! Else, Check To See If P1 Has A Valid Arguement.
705$!
e33f347a
RL
706$ IF (P1.EQS."CONFIG").OR.(P1.EQS."BUILDINF").OR.(P1.EQS."SOFTLINKS") -
707 .OR.(P1.EQS."BUILDALL") -
708 .OR.(P1.EQS."CRYPTO").OR.(P1.EQS."SSL").OR.(P1.EQS."RSAREF") -
709 .OR.(P1.EQS."SSL_TASK").OR.(P1.EQS."TEST").OR.(P1.EQS."APPS")
7d7d2cbc
UM
710$ THEN
711$!
712$! A Valid Arguement.
713$!
2e904727 714$ BUILDCOMMAND = P1
7d7d2cbc
UM
715$!
716$! Else...
717$!
718$ ELSE
719$!
720$! Tell The User We Don't Know What They Want.
721$!
722$ WRITE SYS$OUTPUT ""
723$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
724$ WRITE SYS$OUTPUT ""
725$ WRITE SYS$OUTPUT " ALL : Just Build Everything."
2e904727 726$ WRITE SYS$OUTPUT " CONFIG : Just build the [.CRYPTO]OPENSSLCONF.H file."
8c197cc5 727$ WRITE SYS$OUTPUT " BUILDINF : Just build the [.CRYPTO]BUILDINF.H file."
7d7d2cbc 728$ WRITE SYS$OUTPUT " SOFTLINKS: Just Fix The Unix soft links."
2e904727 729$ WRITE SYS$OUTPUT " BUILDALL : Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done."
7d7d2cbc 730$ WRITE SYS$OUTPUT " CRYPTO : To Build Just The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library."
2db90e3a
RL
731$ WRITE SYS$OUTPUT " CRYPTO/x : To Build Just The x Part Of The"
732$ WRITE SYS$OUTPUT " [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library."
7d7d2cbc
UM
733$ WRITE SYS$OUTPUT " SSL : To Build Just The [.xxx.EXE.SSL]LIBSSL.OLB Library."
734$ WRITE SYS$OUTPUT " SSL_TASK : To Build Just The [.xxx.EXE.SSL]SSL_TASK.EXE Program."
735$ WRITE SYS$OUTPUT " TEST : To Build Just The OpenSSL Test Programs."
736$ WRITE SYS$OUTPUT " APPS : To Build Just The OpenSSL Application Programs."
737$ WRITE SYS$OUTPUT ""
738$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
739$ WRITE SYS$OUTPUT ""
740$ WRITE SYS$OUTPUT " AXP : Alpha Architecture."
741$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
742$ WRITE SYS$OUTPUT ""
743$!
744$! Time To EXIT.
745$!
746$ EXIT
747$!
748$! End The Valid Argument Check.
749$!
750$ ENDIF
751$!
752$! End The P1 Check.
753$!
754$ ENDIF
755$!
756$! Check To See If P2 Is Blank.
757$!
ccb9643f 758$ P2 = "NORSAREF"
7d7d2cbc
UM
759$ IF (P2.EQS."NORSAREF")
760$ THEN
761$!
762$! P2 Is NORSAREF, So Compile Without RSAREF.
763$!
764$ RSAREF = "NORSAREF"
765$!
766$! Else...
767$!
768$ ELSE
769$!
770$! Check To See If We Are To Compile Using The RSAREF Library.
771$!
772$ IF (P2.EQS."RSAREF")
773$ THEN
774$!
775$! Compile With RSAREF Library.
776$!
777$ RSAREF = "RSAREF"
778$!
779$! Else...
780$!
781$ ELSE
782$!
783$! Tell The User Entered An Invalid Option..
784$!
785$ WRITE SYS$OUTPUT ""
786$ WRITE SYS$OUTPUT "The Option ",P2," Is Invalid. The Valid Options Are:"
787$ WRITE SYS$OUTPUT ""
788$ WRITE SYS$OUTPUT " RSAREF : To Compile With The RSAREF Library."
789$ WRITE SYS$OUTPUT " NORSAREF : To Compile With The Regular RSA Library."
790$ WRITE SYS$OUTPUT ""
791$!
792$! Time To EXIT.
793$!
794$ EXIT
795$!
796$! End The Valid Arguemnt Check.
797$!
798$ ENDIF
799$!
800$! End The P2 Check.
801$!
802$ ENDIF
803$!
804$! Check To See If P3 Is Blank.
805$!
806$ IF (P3.EQS."NODEBUG")
807$ THEN
808$!
809$! P3 Is NODEBUG, So Compile Without Debugger Information.
810$!
811$ DEBUGGER = "NODEBUG"
812$!
813$! Else...
814$!
815$ ELSE
816$!
817$! Check To See If We Are To Compile With Debugger Information.
818$!
819$ IF (P3.EQS."DEBUG")
820$ THEN
821$!
822$! Compile With Debugger Information.
823$!
824$ DEBUGGER = "DEBUG"
825$!
826$! Else...
827$!
828$ ELSE
829$!
830$! Tell The User Entered An Invalid Option..
831$!
832$ WRITE SYS$OUTPUT ""
833$ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:"
834$ WRITE SYS$OUTPUT ""
835$ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information."
836$ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information."
837$ WRITE SYS$OUTPUT ""
838$!
839$! Time To EXIT.
840$!
841$ EXIT
842$!
843$! End The Valid Arguement Check.
844$!
845$ ENDIF
846$!
847$! End The P3 Check.
848$!
849$ ENDIF
850$!
851$! Check To See If P4 Is Blank.
852$!
853$ IF (P4.EQS."")
854$ THEN
855$!
856$! O.K., The User Didn't Specify A Compiler, Let's Try To
857$! Find Out Which One To Use.
858$!
859$! Check To See If We Have GNU C.
860$!
861$ IF (F$TRNLNM("GNU_CC").NES."")
862$ THEN
863$!
864$! Looks Like GNUC, Set To Use GNUC.
865$!
866$ COMPILER = "GNUC"
867$!
868$! Tell The User We Are Using GNUC.
869$!
870$ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
871$!
872$! End The GNU C Compiler Check.
873$!
874$ ENDIF
875$!
876$! Check To See If We Have VAXC Or DECC.
877$!
878$ IF (F$GETSYI("CPU").GE.128).OR.(F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC")
879$ THEN
880$!
881$! Looks Like DECC, Set To Use DECC.
882$!
883$ COMPILER = "DECC"
884$!
885$! Tell The User We Are Using DECC.
886$!
887$ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
888$!
889$! Else...
890$!
891$ ELSE
892$!
893$! Looks Like VAXC, Set To Use VAXC.
894$!
895$ COMPILER = "VAXC"
896$!
897$! Tell The User We Are Using VAX C.
898$!
899$ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
900$!
901$! End The DECC & VAXC Compiler Check.
902$!
903$ ENDIF
904$!
905$! Else...
906$!
907$ ELSE
908$!
909$! Check To See If The User Entered A Valid Paramter.
910$!
58dc480f 911$ IF (P4.EQS."VAXC").OR.(P4.EQS."DECC").OR.(P4.EQS."GNUC")!.OR.(P4.EQS."LINK")
7d7d2cbc
UM
912$ THEN
913$!
914$! Check To See If The User Wanted To Just LINK.
915$!
916$ IF (P4.EQS."LINK")
917$ THEN
918$!
919$! Looks Like LINK-only
920$!
921$ COMPILER = "LINK"
922$!
923$! Tell The User We Are Only Linking.
924$!
925$ WRITE SYS$OUTPUT "LINK Only. This actually NOT YET SUPPORTED!"
926$!
927$! End LINK Check.
928$!
929$ ENDIF
930$!
931$! Check To See If The User Wanted DECC.
932$!
933$ IF (P4.EQS."DECC")
934$ THEN
935$!
936$! Looks Like DECC, Set To Use DECC.
937$!
938$ COMPILER = "DECC"
939$!
940$! Tell The User We Are Using DECC.
941$!
942$ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
943$!
944$! End DECC Check.
945$!
946$ ENDIF
947$!
948$! Check To See If We Are To Use VAXC.
949$!
950$ IF (P4.EQS."VAXC")
951$ THEN
952$!
953$! Looks Like VAXC, Set To Use VAXC.
954$!
955$ COMPILER = "VAXC"
956$!
957$! Tell The User We Are Using VAX C.
958$!
959$ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
960$!
961$! End VAXC Check
962$!
963$ ENDIF
964$!
965$! Check To See If We Are To Use GNU C.
966$!
967$ IF (P4.EQS."GNUC")
968$ THEN
969$!
970$! Looks Like GNUC, Set To Use GNUC.
971$!
972$ COMPILER = "GNUC"
973$!
974$! Tell The User We Are Using GNUC.
975$!
976$ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
977$!
978$! End The GNU C Check.
979$!
980$ ENDIF
981$!
982$! Else The User Entered An Invalid Arguement.
983$!
984$ ELSE
985$!
986$! Tell The User We Don't Know What They Want.
987$!
988$ WRITE SYS$OUTPUT ""
989$ WRITE SYS$OUTPUT "The Option ",P4," Is Invalid. The Valid Options Are:"
990$ WRITE SYS$OUTPUT ""
991$ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C."
992$ WRITE SYS$OUTPUT " DECC : To Compile With DEC C."
993$ WRITE SYS$OUTPUT " GNUC : To Compile With GNU C."
994$ WRITE SYS$OUTPUT ""
995$!
996$! Time To EXIT.
997$!
998$ EXIT
999$!
1000$! End The Valid Arguement Check.
1001$!
1002$ ENDIF
1003$!
1004$! End The P4 Check.
1005$!
1006$ ENDIF
1007$!
1008$! Time to check the contents of P5, and to make sure we get the correct library.
1009$!
b935754c
RL
1010$ IF P5.EQS."SOCKETSHR" .OR. P5.EQS."MULTINET" .OR. P5.EQS."UCX" -
1011 .OR. P5.EQS."TCPIP" .OR. P5.EQS."NONE"
7d7d2cbc
UM
1012$ THEN
1013$!
1014$! Check to see if SOCKETSHR was chosen
1015$!
1016$ IF P5.EQS."SOCKETSHR"
1017$ THEN
1018$!
1019$! Set the library to use SOCKETSHR
1020$!
b935754c 1021$ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT"
7d7d2cbc
UM
1022$!
1023$! Tell the user
1024$!
1025$ WRITE SYS$OUTPUT "Using SOCKETSHR for TCP/IP"
1026$!
1027$! Done with SOCKETSHR
1028$!
1029$ ENDIF
1030$!
1031$! Check to see if MULTINET was chosen
1032$!
1033$ IF P5.EQS."MULTINET"
1034$ THEN
1035$!
1036$! Set the library to use UCX emulation.
1037$!
1038$ P5 = "UCX"
1039$!
1040$! Tell the user
1041$!
1042$ WRITE SYS$OUTPUT "Using MultiNet via UCX emulation for TCP/IP"
1043$!
1044$! Done with MULTINET
1045$!
1046$ ENDIF
1047$!
1048$! Check to see if UCX was chosen
1049$!
1050$ IF P5.EQS."UCX"
1051$ THEN
1052$!
1053$! Set the library to use UCX.
1054$!
b935754c 1055$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT"
7d7d2cbc
UM
1056$!
1057$! Tell the user
1058$!
1059$ WRITE SYS$OUTPUT "Using UCX or an emulation thereof for TCP/IP"
1060$!
1061$! Done with UCX
1062$!
1063$ ENDIF
1064$!
b935754c
RL
1065$! Check to see if TCPIP was chosen
1066$!
1067$ IF P5.EQS."TCPIP"
1068$ THEN
1069$!
1070$! Set the library to use TCPIP (post UCX).
1071$!
1072$ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT"
1073$!
1074$! Tell the user
1075$!
1076$ WRITE SYS$OUTPUT "Using TCPIP (post UCX) for TCP/IP"
1077$!
1078$! Done with TCPIP
1079$!
1080$ ENDIF
1081$!
1082$! Check to see if NONE was chosen
1083$!
1084$ IF P5.EQS."NONE"
1085$ THEN
1086$!
1087$! Do not use a TCPIP library.
1088$!
1089$ TCPIP_LIB = ""
1090$!
1091$! Tell the user
1092$!
1093$ WRITE SYS$OUTPUT "A specific TCPIP library will not be used."
1094$!
1095$! Done with NONE.
1096$!
1097$ ENDIF
1098$!
7d7d2cbc
UM
1099$! Set the TCPIP_TYPE symbol
1100$!
1101$ TCPIP_TYPE = P5
1102$!
1103$! Print info
1104$!
1105$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
1106$!
1107$! Else The User Entered An Invalid Arguement.
1108$!
1109$ ELSE
1110$ IF P5 .NES. ""
1111$ THEN
1112$!
1113$! Tell The User We Don't Know What They Want.
1114$!
1115$ WRITE SYS$OUTPUT ""
1116$ WRITE SYS$OUTPUT "The Option ",P5," Is Invalid. The Valid Options Are:"
1117$ WRITE SYS$OUTPUT ""
1118$ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library."
1119$ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library."
b935754c
RL
1120$ WRITE SYS$OUTPUT " TCPIP : To link with TCPIP TCP/IP (post UCX) library."
1121$ WRITE SYS$OUTPUT " NONE : To not link with a specific TCP/IP library."
7d7d2cbc
UM
1122$ WRITE SYS$OUTPUT ""
1123$!
1124$! Time To EXIT.
1125$!
1126$ EXIT
1127$ ELSE
1128$!
b935754c
RL
1129$! If TCPIP is not defined, then hardcode it to make
1130$! it clear that no TCPIP is desired.
1131$!
1132$ IF P5 .EQS. ""
1133$ THEN
1134$ TCPIP_LIB = ""
1135$ TCPIP_TYPE = "NONE"
1136$ ELSE
1137$!
7d7d2cbc
UM
1138$! Set the TCPIP_TYPE symbol
1139$!
b935754c
RL
1140$ TCPIP_TYPE = P5
1141$ ENDIF
7d7d2cbc
UM
1142$ ENDIF
1143$!
1144$! Done with TCP/IP libraries
1145$!
1146$ ENDIF
1147$!
1148$! Special Threads For OpenVMS v7.1 Or Later
1149$!
1150$! Written By: Richard Levitte
1151$! richard@levitte.org
1152$!
1153$!
1154$! Check To See If We Have A Option For P6.
1155$!
1156$ IF (P6.EQS."")
1157$ THEN
1158$!
1159$! Get The Version Of VMS We Are Using.
1160$!
1161$ ISSEVEN :=
1162$ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION")))
1163$ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
1164$!
1165$! Check To See If The VMS Version Is v7.1 Or Later.
1166$!
1167$ IF (TMP.GE.71)
1168$ THEN
1169$!
1170$! We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
1171$!
1172$ ISSEVEN := ,PTHREAD_USE_D4
1173$!
1174$! End The VMS Version Check.
1175$!
1176$ ENDIF
1177$!
1178$! End The P6 Check.
1179$!
1180$ ENDIF
1181$!
1182$! Time To RETURN...
1183$!
1184$ RETURN