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