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