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