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