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