1$!
2$!  MAKETESTS.COM
3$!  Written By:  Robert Byer
4$!               Vice-President
5$!               A-Com Computing, Inc.
6$!               byer@mail.all-net.net
7$!
8$!  Changes by Richard Levitte <richard@levitte.org>
9$!
10$!  This command files compiles and creates all the various different
11$!  "test" programs for the different types of encryption for OpenSSL.
12$!  It was written so it would try to determine what "C" compiler to
13$!  use or you can specify which "C" compiler to use.
14$!
15$!  The test "executeables" will be placed in a directory called
16$!  [.xxx.EXE.TEST] where "xxx" denotes AXP or VAX depending on your machines
17$!  architecture.
18$!
19$!  Specify DEBUG or NODEBUG P1 to compile with or without debugger
20$!  information.
21$!
22$!  Specify which compiler at P2 to try to compile under.
23$!
24$!	   VAXC	 For VAX C.
25$!	   DECC	 For DEC C.
26$!	   GNUC	 For GNU C.
27$!
28$!  If you don't speficy a compiler, it will try to determine which
29$!  "C" compiler to use.
30$!
31$!  P3, if defined, sets a TCP/IP library to use, through one of the following
32$!  keywords:
33$!
34$!	UCX		for UCX
35$!	SOCKETSHR	for SOCKETSHR+NETLIB
36$!
37$!  P4, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
38$!
39$!
40$! Define A TCP/IP Library That We Will Need To Link To.
41$! (That is, If Wee Need To Link To One.)
42$!
43$ TCPIP_LIB = ""
44$!
45$! Check Which Architecture We Are Using.
46$!
47$ IF (F$GETSYI("CPU").GE.128) 
48$ THEN
49$!
50$!  The Architecture Is AXP.
51$!
52$   ARCH := AXP
53$!
54$! Else...
55$!
56$ ELSE
57$!
58$!  The Architecture Is VAX.
59$!
60$   ARCH := VAX
61$!
62$! End The Architecture Check.
63$!
64$ ENDIF
65$!
66$! Check To Make Sure We Have Valid Command Line Parameters.
67$!
68$ GOSUB CHECK_OPTIONS
69$!
70$! Initialise logical names and such
71$!
72$ GOSUB INITIALISE
73$!
74$! Tell The User What Kind of Machine We Run On.
75$!
76$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
77$!
78$! Define The CRYPTO-LIB We Are To Use.
79$!
80$ CRYPTO_LIB := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]LIBCRYPTO.OLB
81$!
82$! Define The SSL We Are To Use.
83$!
84$ SSL_LIB := SYS$DISK:[-.'ARCH'.EXE.SSL]LIBSSL.OLB
85$!
86$! Define The OBJ Directory.
87$!
88$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.TEST]
89$!
90$! Check To See If The Architecture Specific OBJ Directory Exists.
91$!
92$ IF (F$PARSE(OBJ_DIR).EQS."")
93$ THEN
94$!
95$!  The EXE Directory Dosen't Exist, So Create It.
96$!
97$   CREATE/DIRECTORY 'OBJ_DIR'
98$!
99$! End The Architecture Specific OBJ Directory Check.
100$!
101$ ENDIF
102$!
103$! Define The EXE Directory.
104$!
105$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.TEST]
106$!
107$! Check To See If The Architecture Specific EXE Directory Exists.
108$!
109$ IF (F$PARSE(EXE_DIR).EQS."")
110$ THEN
111$!
112$!  The EXE Directory Dosen't Exist, So Create It.
113$!
114$   CREATE/DIRECTORY 'EXE_DIR'
115$!
116$! End The Architecture Specific EXE Directory Check.
117$!
118$ ENDIF
119$!
120$! Check To See If We Have The Proper Libraries.
121$!
122$ GOSUB LIB_CHECK
123$!
124$! Check To See If We Have A Linker Option File.
125$!
126$ GOSUB CHECK_OPT_FILE
127$!
128$! Define The TEST Files.
129$!
130$ TEST_FILES = "BNTEST,ECTEST,IDEATEST,MD2TEST,MD4TEST,MD5TEST,HMACTEST,"+ -
131	       "RC2TEST,RC4TEST,RC5TEST,"+ -
132	       "DESTEST,SHATEST,SHA1TEST,MDC2TEST,RMDTEST,"+ -
133	       "RANDTEST,DHTEST,ENGINETEST,"+ -
134	       "BFTEST,CASTTEST,SSLTEST,EXPTEST,DSATEST,RSA_TEST,"+ -
135	       "EVP_TEST"
136$ TCPIP_PROGRAMS = ",,"
137$ IF COMPILER .EQS. "VAXC" THEN -
138     TCPIP_PROGRAMS = ",SSLTEST,"
139$!
140$!  Define A File Counter And Set It To "0".
141$!
142$ FILE_COUNTER = 0
143$!
144$! Top Of The File Loop.
145$!
146$ NEXT_FILE:
147$!
148$! O.K, Extract The File Name From The File List.
149$!
150$ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",TEST_FILES)
151$!
152$! Check To See If We Are At The End Of The File List.
153$!
154$ IF (FILE_NAME.EQS.",") THEN GOTO FILE_DONE
155$!
156$! Increment The Counter.
157$!
158$ FILE_COUNTER = FILE_COUNTER + 1
159$!
160$! Create The Source File Name.
161$!
162$ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME + ".C"
163$!
164$! Create The Object File Name.
165$!
166$ OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ"
167$!
168$! Create The Executable File Name.
169$!
170$ EXE_FILE = EXE_DIR + FILE_NAME + ".EXE"
171$ ON WARNING THEN GOTO NEXT_FILE
172$!
173$! Check To See If The File We Want To Compile Actually Exists.
174$!
175$ IF (F$SEARCH(SOURCE_FILE).EQS."")
176$ THEN
177$!
178$!  Tell The User That The File Dosen't Exist.
179$!
180$   WRITE SYS$OUTPUT ""
181$   WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist."
182$   WRITE SYS$OUTPUT ""
183$!
184$!  Exit The Build.
185$!
186$   GOTO EXIT
187$ ENDIF
188$!
189$! Tell The User What We Are Building.
190$!
191$ WRITE SYS$OUTPUT "Building The ",FILE_NAME," Test Program."
192$!
193$! Compile The File.
194$!
195$ ON ERROR THEN GOTO NEXT_FILE
196$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
197$ ON WARNING THEN GOTO NEXT_FILE
198$!
199$! Check If What We Are About To Compile Works Without A TCP/IP Library.
200$!
201$ IF ((TCPIP_LIB.EQS."").AND.((TCPIP_PROGRAMS-FILE_NAME).NES.TCPIP_PROGRAMS))
202$ THEN
203$!
204$!  Inform The User That A TCP/IP Library Is Needed To Compile This Program.
205$!
206$   WRITE SYS$OUTPUT FILE_NAME," Needs A TCP/IP Library.  Can't Link.  Skipping..."
207$   GOTO NEXT_FILE
208$!
209$! End The TCP/IP Library Check.
210$!
211$ ENDIF
212$!
213$! Link The Program, Check To See If We Need To Link With RSAREF Or Not.
214$! Check To See If We Are To Link With A Specific TCP/IP Library.
215$!
216$ IF (TCPIP_LIB.NES."")
217$ THEN
218$!
219$!  Don't Link With The RSAREF Routines And TCP/IP Library.
220$!
221$   LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
222	'OBJECT_FILE', -
223        'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
224        'TCPIP_LIB','OPT_FILE'/OPTION
225$!
226$! Else...
227$!
228$ ELSE
229$!
230$!  Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
231$!
232$   LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
233	'OBJECT_FILE', -
234        'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
235        'OPT_FILE'/OPTION
236$!
237$! End The TCP/IP Library Check.
238$!
239$ ENDIF
240$!
241$! Go Back And Do It Again.
242$!
243$ GOTO NEXT_FILE
244$!
245$! All Done With This Library Part.
246$!
247$ FILE_DONE:
248$!
249$! All Done, Time To Exit.
250$!
251$ EXIT:
252$ GOSUB CLEANUP
253$ EXIT
254$!
255$! Check For The Link Option FIle.
256$!
257$ CHECK_OPT_FILE:
258$!
259$! Check To See If We Need To Make A VAX C Option File.
260$!
261$ IF (COMPILER.EQS."VAXC")
262$ THEN
263$!
264$!  Check To See If We Already Have A VAX C Linker Option File.
265$!
266$   IF (F$SEARCH(OPT_FILE).EQS."")
267$   THEN
268$!
269$!    We Need A VAX C Linker Option File.
270$!
271$     CREATE 'OPT_FILE'
272$DECK
273!
274! Default System Options File To Link Agianst 
275! The Sharable VAX C Runtime Library.
276!
277SYS$SHARE:VAXCRTL.EXE/SHARE
278$EOD
279$!
280$!  End The Option File Check.
281$!
282$   ENDIF
283$!
284$! End The VAXC Check.
285$!
286$ ENDIF
287$!
288$! Check To See If We Need A GNU C Option File.
289$!
290$ IF (COMPILER.EQS."GNUC")
291$ THEN
292$!
293$!  Check To See If We Already Have A GNU C Linker Option File.
294$!
295$   IF (F$SEARCH(OPT_FILE).EQS."")
296$   THEN
297$!
298$!    We Need A GNU C Linker Option File.
299$!
300$     CREATE 'OPT_FILE'
301$DECK
302!
303! Default System Options File To Link Agianst 
304! The Sharable C Runtime Library.
305!
306GNU_CC:[000000]GCCLIB/LIBRARY
307SYS$SHARE:VAXCRTL/SHARE
308$EOD
309$!
310$!  End The Option File Check.
311$!
312$   ENDIF
313$!
314$! End The GNU C Check.
315$!
316$ ENDIF
317$!
318$! Check To See If We Need A DEC C Option File.
319$!
320$ IF (COMPILER.EQS."DECC")
321$ THEN
322$!
323$!  Check To See If We Already Have A DEC C Linker Option File.
324$!
325$   IF (F$SEARCH(OPT_FILE).EQS."")
326$   THEN
327$!
328$!    Figure Out If We Need An AXP Or A VAX Linker Option File.
329$!
330$     IF (ARCH.EQS."VAX")
331$     THEN
332$!
333$!      We Need A DEC C Linker Option File For VAX.
334$!
335$       CREATE 'OPT_FILE'
336$DECK
337!
338! Default System Options File To Link Agianst 
339! The Sharable DEC C Runtime Library.
340!
341SYS$SHARE:DECC$SHR.EXE/SHARE
342$EOD
343$!
344$!    Else...
345$!
346$     ELSE
347$!
348$!      Create The AXP Linker Option File.
349$!
350$       CREATE 'OPT_FILE'
351$DECK
352!
353! Default System Options File For AXP To Link Agianst 
354! The Sharable C Runtime Library.
355!
356SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
357SYS$SHARE:CMA$OPEN_RTL/SHARE
358$EOD
359$!
360$!    End The VAX/AXP DEC C Option File Check.
361$!
362$     ENDIF
363$!
364$!  End The Option File Search.
365$!
366$   ENDIF
367$!
368$! End The DEC C Check.
369$!
370$ ENDIF
371$!
372$!  Tell The User What Linker Option File We Are Using.
373$!
374$ WRITE SYS$OUTPUT "Using Linker Option File ",OPT_FILE,"."	
375$!
376$! Time To RETURN.
377$!
378$ RETURN
379$!
380$! Check To See If We Have The Appropiate Libraries.
381$!
382$ LIB_CHECK:
383$!
384$! Look For The Library LIBCRYPTO.OLB.
385$!
386$ IF (F$SEARCH(CRYPTO_LIB).EQS."")
387$ THEN
388$!
389$!  Tell The User We Can't Find The LIBCRYPTO.OLB Library.
390$!
391$   WRITE SYS$OUTPUT ""
392$   WRITE SYS$OUTPUT "Can't Find The Library ",CRYPTO_LIB,"."
393$   WRITE SYS$OUTPUT "We Can't Link Without It."
394$   WRITE SYS$OUTPUT ""
395$!
396$!  Since We Can't Link Without It, Exit.
397$!
398$   EXIT
399$!
400$! End The Crypto Library Check.
401$!
402$ ENDIF
403$!
404$! Look For The Library LIBSSL.OLB.
405$!
406$ IF (F$SEARCH(SSL_LIB).EQS."")
407$ THEN
408$!
409$!  Tell The User We Can't Find The LIBSSL.OLB Library.
410$!
411$   WRITE SYS$OUTPUT ""
412$   WRITE SYS$OUTPUT "Can't Find The Library ",SSL_LIB,"."
413$   WRITE SYS$OUTPUT "Some Of The Test Programs Need To Link To It."
414$   WRITE SYS$OUTPUT ""
415$!
416$!  Since We Can't Link Without It, Exit.
417$!
418$   EXIT
419$!
420$! End The SSL Library Check.
421$!
422$ ENDIF
423$!
424$! Time To Return.
425$!
426$ RETURN
427$!
428$! Check The User's Options.
429$!
430$ CHECK_OPTIONS:
431$!
432$! Check To See If P1 Is Blank.
433$!
434$ IF (P1.EQS."NODEBUG")
435$ THEN
436$!
437$!   P1 Is NODEBUG, So Compile Without Debugger Information.
438$!
439$    DEBUGGER  = "NODEBUG"
440$    TRACEBACK = "NOTRACEBACK" 
441$    GCC_OPTIMIZE = "OPTIMIZE"
442$    CC_OPTIMIZE = "OPTIMIZE"
443$    WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
444$    WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
445$!
446$! Else...
447$!
448$ ELSE
449$!
450$!  Check To See If We Are To Compile With Debugger Information.
451$!
452$   IF (P1.EQS."DEBUG")
453$   THEN
454$!
455$!    Compile With Debugger Information.
456$!
457$     DEBUGGER  = "DEBUG"
458$     TRACEBACK = "TRACEBACK"
459$     GCC_OPTIMIZE = "NOOPTIMIZE"
460$     CC_OPTIMIZE = "NOOPTIMIZE"
461$     WRITE SYS$OUTPUT "Debugger Information Will Be Produced During Compile."
462$     WRITE SYS$OUTPUT "Compiling Without Compiler Optimization."
463$!
464$!  Else...
465$!
466$   ELSE
467$!
468$!    Tell The User Entered An Invalid Option..
469$!
470$     WRITE SYS$OUTPUT ""
471$     WRITE SYS$OUTPUT "The Option ",P1," Is Invalid.  The Valid Options Are:"
472$     WRITE SYS$OUTPUT ""
473$     WRITE SYS$OUTPUT "    DEBUG    :  Compile With The Debugger Information."
474$     WRITE SYS$OUTPUT "    NODEBUG  :  Compile Without The Debugger Information."
475$     WRITE SYS$OUTPUT ""
476$!
477$!    Time To EXIT.
478$!
479$     EXIT
480$!
481$!  End The Valid Arguement Check.
482$!
483$   ENDIF
484$!
485$! End The P2 Check.
486$!
487$ ENDIF
488$!
489$! Check To See If P2 Is Blank.
490$!
491$ IF (P2.EQS."")
492$ THEN
493$!
494$!  O.K., The User Didn't Specify A Compiler, Let's Try To
495$!  Find Out Which One To Use.
496$!
497$!  Check To See If We Have GNU C.
498$!
499$   IF (F$TRNLNM("GNU_CC").NES."")
500$   THEN
501$!
502$!    Looks Like GNUC, Set To Use GNUC.
503$!
504$     P2 = "GNUC"
505$!
506$!  End The GNU C Compiler Check.
507$!
508$   ELSE
509$!
510$!  Check To See If We Have VAXC Or DECC.
511$!
512$     IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
513$     THEN 
514$!
515$!      Looks Like DECC, Set To Use DECC.
516$!
517$       P2 = "DECC"
518$!
519$!      Else...
520$!
521$     ELSE
522$!
523$!      Looks Like VAXC, Set To Use VAXC.
524$!
525$       P2 = "VAXC"
526$!
527$!    End The VAXC Compiler Check.
528$!
529$     ENDIF
530$!
531$!  End The DECC & VAXC Compiler Check.
532$!
533$   ENDIF
534$!
535$!  End The Compiler Check.
536$!
537$ ENDIF
538$!
539$! Check To See If We Have A Option For P3.
540$!
541$ IF (P3.EQS."")
542$ THEN
543$!
544$!  Find out what socket library we have available
545$!
546$   IF F$PARSE("SOCKETSHR:") .NES. ""
547$   THEN
548$!
549$!    We have SOCKETSHR, and it is my opinion that it's the best to use.
550$!
551$     P3 = "SOCKETSHR"
552$!
553$!    Tell the user
554$!
555$     WRITE SYS$OUTPUT "Using SOCKETSHR for TCP/IP"
556$!
557$!    Else, let's look for something else
558$!
559$   ELSE
560$!
561$!    Like UCX (the reason to do this before Multinet is that the UCX
562$!    emulation is easier to use...)
563$!
564$     IF F$TRNLNM("UCX$IPC_SHR") .NES. "" -
565	 .OR. F$PARSE("SYS$SHARE:UCX$IPC_SHR.EXE") .NES. "" -
566	 .OR. F$PARSE("SYS$LIBRARY:UCX$IPC.OLB") .NES. ""
567$     THEN
568$!
569$!	Last resort: a UCX or UCX-compatible library
570$!
571$	P3 = "UCX"
572$!
573$!      Tell the user
574$!
575$       WRITE SYS$OUTPUT "Using UCX or an emulation thereof for TCP/IP"
576$!
577$!	That was all...
578$!
579$     ENDIF
580$   ENDIF
581$ ENDIF
582$!
583$! Set Up Initial CC Definitions, Possibly With User Ones
584$!
585$ CCDEFS = "TCPIP_TYPE_''P3'"
586$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
587$ CCEXTRAFLAGS = ""
588$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
589$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX"
590$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
591	CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
592$!
593$!  Check To See If The User Entered A Valid Paramter.
594$!
595$ IF (P2.EQS."VAXC").OR.(P2.EQS."DECC").OR.(P2.EQS."GNUC")
596$ THEN
597$!
598$!  Check To See If The User Wanted DECC.
599$!
600$   IF (P2.EQS."DECC")
601$   THEN
602$!
603$!    Looks Like DECC, Set To Use DECC.
604$!
605$     COMPILER = "DECC"
606$!
607$!    Tell The User We Are Using DECC.
608$!
609$     WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
610$!
611$!    Use DECC...
612$!
613$     CC = "CC"
614$     IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
615	 THEN CC = "CC/DECC"
616$     CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
617           "/NOLIST/PREFIX=ALL" + -
618	   "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
619$!
620$!    Define The Linker Options File Name.
621$!
622$     OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT"
623$!
624$!  End DECC Check.
625$!
626$   ENDIF
627$!
628$!  Check To See If We Are To Use VAXC.
629$!
630$   IF (P2.EQS."VAXC")
631$   THEN
632$!
633$!    Looks Like VAXC, Set To Use VAXC.
634$!
635$     COMPILER = "VAXC"
636$!
637$!    Tell The User We Are Using VAX C.
638$!
639$     WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
640$!
641$!    Compile Using VAXC.
642$!
643$     CC = "CC"
644$     IF ARCH.EQS."AXP"
645$     THEN
646$	WRITE SYS$OUTPUT "There is no VAX C on Alpha!"
647$	EXIT
648$     ENDIF
649$     IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
650$     CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
651	   "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
652$     CCDEFS = CCDEFS + ",""VAXC"""
653$!
654$!    Define <sys> As SYS$COMMON:[SYSLIB]
655$!
656$     DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
657$!
658$!    Define The Linker Options File Name.
659$!
660$     OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT"
661$!
662$!  End VAXC Check
663$!
664$   ENDIF
665$!
666$!  Check To See If We Are To Use GNU C.
667$!
668$   IF (P2.EQS."GNUC")
669$   THEN
670$!
671$!    Looks Like GNUC, Set To Use GNUC.
672$!
673$     COMPILER = "GNUC"
674$!
675$!    Tell The User We Are Using GNUC.
676$!
677$     WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
678$!
679$!    Use GNU C...
680$!
681$     CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
682	   "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
683$!
684$!    Define The Linker Options File Name.
685$!
686$     OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT"
687$!
688$!  End The GNU C Check.
689$!
690$   ENDIF
691$!
692$!  Set up default defines
693$!
694$   CCDEFS = """FLAT_INC=1""," + CCDEFS
695$!
696$!  Finish up the definition of CC.
697$!
698$   IF COMPILER .EQS. "DECC"
699$   THEN
700$     IF CCDISABLEWARNINGS .EQS. ""
701$     THEN
702$       CC4DISABLEWARNINGS = "DOLLARID"
703$     ELSE
704$       CC4DISABLEWARNINGS = CCDISABLEWARNINGS + ",DOLLARID"
705$       CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
706$     ENDIF
707$     CC4DISABLEWARNINGS = "/WARNING=(DISABLE=(" + CC4DISABLEWARNINGS + "))"
708$   ELSE
709$     CCDISABLEWARNINGS = ""
710$     CC4DISABLEWARNINGS = ""
711$   ENDIF
712$   CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
713$!
714$!  Show user the result
715$!
716$   WRITE/SYMBOL SYS$OUTPUT "Main Compiling Command: ",CC
717$!
718$!  Else The User Entered An Invalid Arguement.
719$!
720$ ELSE
721$!
722$!  Tell The User We Don't Know What They Want.
723$!
724$   WRITE SYS$OUTPUT ""
725$   WRITE SYS$OUTPUT "The Option ",P2," Is Invalid.  The Valid Options Are:"
726$   WRITE SYS$OUTPUT ""
727$   WRITE SYS$OUTPUT "    VAXC  :  To Compile With VAX C."
728$   WRITE SYS$OUTPUT "    DECC  :  To Compile With DEC C."
729$   WRITE SYS$OUTPUT "    GNUC  :  To Compile With GNU C."
730$   WRITE SYS$OUTPUT ""
731$!
732$!  Time To EXIT.
733$!
734$   EXIT
735$ ENDIF
736$!
737$! Time to check the contents, and to make sure we get the correct library.
738$!
739$ IF P3.EQS."SOCKETSHR" .OR. P3.EQS."MULTINET" .OR. P3.EQS."UCX" -
740     .OR. P3.EQS."TCPIP" .OR. P3.EQS."NONE"
741$ THEN
742$!
743$!  Check to see if SOCKETSHR was chosen
744$!
745$   IF P3.EQS."SOCKETSHR"
746$   THEN
747$!
748$!    Set the library to use SOCKETSHR
749$!
750$     TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT"
751$!
752$!    Done with SOCKETSHR
753$!
754$   ENDIF
755$!
756$!  Check to see if MULTINET was chosen
757$!
758$   IF P3.EQS."MULTINET"
759$   THEN
760$!
761$!    Set the library to use UXC emulation.
762$!
763$     P3 = "UCX"
764$!
765$!    Done with MULTINET
766$!
767$   ENDIF
768$!
769$!  Check to see if UCX was chosen
770$!
771$   IF P3.EQS."UCX"
772$   THEN
773$!
774$!    Set the library to use UCX.
775$!
776$     TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT"
777$     IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
778$     THEN
779$       TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT"
780$     ELSE
781$       IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
782	  TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT/OPT"
783$     ENDIF
784$!
785$!    Done with UCX
786$!
787$   ENDIF
788$!
789$!  Check to see if TCPIP was chosen
790$!
791$   IF P3.EQS."TCPIP"
792$   THEN
793$!
794$!    Set the library to use TCPIP (post UCX).
795$!
796$     TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT"
797$!
798$!    Done with TCPIP
799$!
800$   ENDIF
801$!
802$!  Check to see if NONE was chosen
803$!
804$   IF P3.EQS."NONE"
805$   THEN
806$!
807$!    Do not use a TCPIP library.
808$!
809$     TCPIP_LIB = ""
810$!
811$!    Done with NONE
812$!
813$   ENDIF
814$!
815$!  Print info
816$!
817$   WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
818$!
819$!  Else The User Entered An Invalid Arguement.
820$!
821$ ELSE
822$!
823$!  Tell The User We Don't Know What They Want.
824$!
825$   WRITE SYS$OUTPUT ""
826$   WRITE SYS$OUTPUT "The Option ",P3," Is Invalid.  The Valid Options Are:"
827$   WRITE SYS$OUTPUT ""
828$   WRITE SYS$OUTPUT "    SOCKETSHR  :  To link with SOCKETSHR TCP/IP library."
829$   WRITE SYS$OUTPUT "    UCX        :  To link with UCX TCP/IP library."
830$   WRITE SYS$OUTPUT "    TCPIP      :  To link with TCPIP (post UCX) TCP/IP library."
831$   WRITE SYS$OUTPUT ""
832$!
833$!  Time To EXIT.
834$!
835$   EXIT
836$!
837$!  Done with TCP/IP libraries
838$!
839$ ENDIF
840$!
841$! Special Threads For OpenVMS v7.1 Or Later
842$!
843$! Written By:  Richard Levitte
844$!              richard@levitte.org
845$!
846$!
847$! Check To See If We Have A Option For P4.
848$!
849$ IF (P4.EQS."")
850$ THEN
851$!
852$!  Get The Version Of VMS We Are Using.
853$!
854$   ISSEVEN :=
855$   TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION")))
856$   TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
857$!
858$!  Check To See If The VMS Version Is v7.1 Or Later.
859$!
860$   IF (TMP.GE.71)
861$   THEN
862$!
863$!    We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
864$!
865$     ISSEVEN := ,PTHREAD_USE_D4
866$!
867$!  End The VMS Version Check.
868$!
869$   ENDIF
870$!
871$! End The P4 Check.
872$!
873$ ENDIF
874$!
875$!  Time To RETURN...
876$!
877$ RETURN
878$!
879$ INITIALISE:
880$!
881$! Save old value of the logical name OPENSSL
882$!
883$ __SAVE_OPENSSL = F$TRNLNM("OPENSSL","LNM$PROCESS_TABLE")
884$!
885$! Save directory information
886$!
887$ __HERE = F$PARSE(F$PARSE("A.;",F$ENVIRONMENT("PROCEDURE"))-"A.;","[]A.;") - "A.;"
888$ __HERE = F$EDIT(__HERE,"UPCASE")
889$ __TOP = __HERE - "TEST]"
890$ __INCLUDE = __TOP + "INCLUDE.OPENSSL]"
891$!
892$! Set up the logical name OPENSSL to point at the include directory
893$!
894$ DEFINE OPENSSL/NOLOG '__INCLUDE'
895$!
896$! Done
897$!
898$ RETURN
899$!
900$ CLEANUP:
901$!
902$! Restore the logical name OPENSSL if it had a value
903$!
904$ IF __SAVE_OPENSSL .EQS. ""
905$ THEN
906$   DEASSIGN OPENSSL
907$ ELSE
908$   DEFINE/NOLOG OPENSSL '__SAVE_OPENSSL'
909$ ENDIF
910$!
911$! Done
912$!
913$ RETURN
914