Allow IPv6 address entry in tools>ping - Loosens valid character check
[tomato/davidwu.git] / release / src / router / openssl / crypto / des / des-lib.com
blob348f1c047093b197031707b2070a41046af14608
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.
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.
17 $!  Specify one of the following to build just that part, specify "ALL" to
18 $!  just build everything.
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.
28 $!  Specify either DEBUG or NODEBUG as P2 to compile with or without
29 $!  debugging information.
31 $!  Specify which compiler at P3 to try to compile under.
33 $!         VAXC  For VAX C.
34 $!         DECC  For DEC C.
35 $!         GNUC  For GNU C.
37 $!  If you don't speficy a compiler, it will try to determine which
38 $!  "C" compiler to try to use.
40 $!  P4, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
43 $! Make sure we know what architecture we run on.
46 $! Check Which Architecture We Are Using.
48 $ IF (F$GETSYI("CPU").LT.128)
49 $ THEN
51 $!  The Architecture Is VAX
53 $   ARCH := VAX
55 $! Else...
57 $ ELSE
59 $!  The Architecture Is Alpha, IA64 or whatever comes in the future.
61 $   ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
62 $   IF (ARCH .EQS. "") THEN ARCH = "UNK"
64 $! End The Architecture Check.
66 $ ENDIF
68 $! Define The OBJ Directory Name.
70 $ OBJ_DIR := SYS$DISK:[--.'ARCH'.OBJ.CRYPTO.DES]
72 $! Define The EXE Directory Name.
74 $ EXE_DIR :== SYS$DISK:[--.'ARCH'.EXE.CRYPTO.DES]
76 $! Check To Make Sure We Have Valid Command Line Parameters.
78 $ GOSUB CHECK_OPTIONS
80 $! Tell The User What Kind of Machine We Run On.
82 $ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
84 $! Check To See If The Architecture Specific OBJ Directory Exists.
86 $ IF (F$PARSE(OBJ_DIR).EQS."")
87 $ THEN
89 $!  It Dosen't Exist, So Create It.
91 $   CREATE/DIR 'OBJ_DIR'
93 $! End The Architecture Specific OBJ Directory Check.
95 $ ENDIF
97 $! Check To See If The Architecture Specific Directory Exists.
99 $ IF (F$PARSE(EXE_DIR).EQS."")
100 $ THEN
102 $!  It Dosen't Exist, So Create It.
104 $   CREATE/DIR 'EXE_DIR'
106 $! End The Architecture Specific Directory Check.
108 $ ENDIF
110 $! Define The Library Name.
112 $ LIB_NAME := 'EXE_DIR'LIBDES.OLB
114 $! Check To See What We Are To Do.
116 $ IF (BUILDALL.EQS."TRUE")
117 $ THEN
119 $!  Since Nothing Special Was Specified, Do Everything.
121 $   GOSUB LIBRARY
122 $   GOSUB DESTEST
123 $   GOSUB SPEED
124 $   GOSUB RPW
125 $   GOSUB DES
126 $   GOSUB DES_OPTS
128 $! Else...
130 $ ELSE
132 $!    Build Just What The User Wants Us To Build.
134 $     GOSUB 'BUILDALL'
136 $! End The BUILDALL Check.
138 $ ENDIF
140 $! Time To EXIT.
142 $ EXIT
143 $ LIBRARY:
145 $! Tell The User That We Are Compiling.
147 $ WRITE SYS$OUTPUT "Compiling The ",LIB_NAME," Files."
149 $! Check To See If We Already Have A "[.xxx.EXE.CRYPTO.DES]LIBDES.OLB" Library...
151 $ IF (F$SEARCH(LIB_NAME).EQS."")
152 $ THEN
154 $! Guess Not, Create The Library.
156 $   LIBRARY/CREATE/OBJECT 'LIB_NAME'
158 $! End The Library Exist Check.
160 $ ENDIF
162 $! Define The DES Library Files.
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"
171 $!  Define A File Counter And Set It To "0".
173 $ FILE_COUNTER = 0
175 $! Top Of The File Loop.
177 $ NEXT_FILE:
179 $! O.K, Extract The File Name From The File List.
181 $ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",LIB_DES)
183 $! Check To See If We Are At The End Of The File List.
185 $ IF (FILE_NAME.EQS.",") THEN GOTO FILE_DONE
187 $! Increment The Counter.
189 $ FILE_COUNTER = FILE_COUNTER + 1
191 $! Create The Source File Name.
193 $ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME + ".C"
195 $!  Tell The User We Are Compiling The Source File.
197 $ WRITE SYS$OUTPUT "    ",FILE_NAME,".C"
199 $! Create The Object File Name.
201 $ OBJECT_FILE = OBJ_DIR + FILE_NAME + "." + ARCH + "OBJ"
202 $ ON WARNING THEN GOTO NEXT_FILE
204 $! Check To See If The File We Want To Compile Actually Exists.
206 $ IF (F$SEARCH(SOURCE_FILE).EQS."")
207 $ THEN
209 $!  Tell The User That The File Dosen't Exist.
211 $   WRITE SYS$OUTPUT ""
212 $   WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist."
213 $   WRITE SYS$OUTPUT ""
215 $!  Exit The Build.
217 $   EXIT
219 $! End The File Exists Check.
221 $ ENDIF
223 $! Compile The File.
225 $ ON ERROR THEN GOTO NEXT_FILE
226 $ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
228 $! Add It To The Library.
230 $ LIBRARY/REPLACE/OBJECT 'LIB_NAME' 'OBJECT_FILE'
232 $! Time To Clean Up The Object File.
234 $ DELETE 'OBJECT_FILE';*
236 $! Go Back And Do It Again.
238 $ GOTO NEXT_FILE
240 $! All Done With This Library Part.
242 $ FILE_DONE:
244 $! Tell The User That We Are All Done.
246 $ WRITE SYS$OUTPUT "Library ",LIB_NAME," Built."
248 $! All Done, Time To Return.
250 $ RETURN
252 $!  Compile The DESTEST Program.
254 $ DESTEST:
256 $! Check To See If We Have The Proper Libraries.
258 $ GOSUB LIB_CHECK
260 $! Check To See If We Have A Linker Option File.
262 $ GOSUB CHECK_OPT_FILE
264 $! Check To See If The File We Want To Compile Actually Exists.
266 $ IF (F$SEARCH("SYS$DISK:[]DESTEST.C").EQS."")
267 $ THEN
269 $!  Tell The User That The File Dosen't Exist.
271 $   WRITE SYS$OUTPUT ""
272 $   WRITE SYS$OUTPUT "The File DESTEST.C Dosen't Exist."
273 $   WRITE SYS$OUTPUT ""
275 $!  Exit The Build.
277 $   EXIT
279 $! End The DESTEST.C File Check.
281 $ ENDIF
283 $! Tell The User What We Are Building.
285 $ WRITE SYS$OUTPUT "Building ",EXE_DIR,"DESTEST.EXE"
287 $! Compile The DESTEST Program.
289 $ CC/OBJECT='OBJ_DIR'DESTEST.OBJ SYS$DISK:[]DESTEST.C
291 $! Link The DESTEST Program.
293 $ LINK/'DEBUGGER'/'TRACEBACK'/CONTIGUOUS/EXE='EXE_DIR'DESTEST.EXE -
294       'OBJ_DIR'DESTEST.OBJ,'LIB_NAME'/LIBRARY,'OPT_FILE'/OPTION
296 $! All Done, Time To Return.
298 $ RETURN
300 $!  Compile The SPEED Program.
302 $ SPEED:
304 $! Check To See If We Have The Proper Libraries.
306 $ GOSUB LIB_CHECK
308 $! Check To See If We Have A Linker Option File.
310 $ GOSUB CHECK_OPT_FILE
312 $! Check To See If The File We Want To Compile Actually Exists.
314 $ IF (F$SEARCH("SYS$DISK:[]SPEED.C").EQS."")
315 $ THEN
317 $!  Tell The User That The File Dosen't Exist.
319 $   WRITE SYS$OUTPUT ""
320 $   WRITE SYS$OUTPUT "The File SPEED.C Dosen't Exist."
321 $   WRITE SYS$OUTPUT ""
323 $!  Exit The Build.
325 $   EXIT
327 $! End The SPEED.C File Check.
329 $ ENDIF
331 $! Tell The User What We Are Building.
333 $ WRITE SYS$OUTPUT "Building ",EXE_DIR,"SPEED.EXE"
335 $! Compile The SPEED Program.
337 $ CC/OBJECT='OBJ_DIR'SPEED.OBJ SYS$DISK:[]SPEED.C
339 $! Link The SPEED Program.
341 $ LINK/'DEBUGGER'/'TRACEBACK'/CONTIGUOUS/EXE='EXE_DIR'SPEED.EXE -
342       'OBJ_DIR'SPEED.OBJ,'LIB_NAME'/LIBRARY,'OPT_FILE'/OPTION
344 $! All Done, Time To Return.
346 $ RETURN
348 $!  Compile The RPW Program.
350 $ RPW:
352 $! Check To See If We Have The Proper Libraries.
354 $ GOSUB LIB_CHECK
356 $! Check To See If We Have A Linker Option File.
358 $ GOSUB CHECK_OPT_FILE
360 $! Check To See If The File We Want To Compile Actually Exists.
362 $ IF (F$SEARCH("SYS$DISK:[]RPW.C").EQS."")
363 $ THEN
365 $!  Tell The User That The File Dosen't Exist.
367 $   WRITE SYS$OUTPUT ""
368 $   WRITE SYS$OUTPUT "The File RPW.C Dosen't Exist."
369 $   WRITE SYS$OUTPUT ""
371 $!  Exit The Build.
373 $   EXIT
375 $! End The RPW.C File Check.
377 $ ENDIF
379 $! Tell The User What We Are Building.
381 $ WRITE SYS$OUTPUT "Building ",EXE_DIR,"RPW.EXE"
383 $! Compile The RPW Program.
385 $ CC/OBJECT='OBJ_DIR'RPW.OBJ SYS$DISK:[]RPW.C
387 $! Link The RPW Program.
389 $ LINK/'DEBUGGER'/'TRACEBACK'/CONTIGUOUS/EXE='EXE_DIR'RPW.EXE -
390       'OBJ_DIR'RPW.OBJ,'LIB_NAME'/LIBRARY,'OPT_FILE'/OPTION
392 $! All Done, Time To Return.
394 $ RETURN
396 $!  Compile The DES Program.
398 $ DES:
400 $! Check To See If We Have The Proper Libraries.
402 $ GOSUB LIB_CHECK
404 $! Check To See If We Have A Linker Option File.
406 $ GOSUB CHECK_OPT_FILE
408 $! Check To See If The File We Want To Compile Actually Exists.
410 $ IF (F$SEARCH("SYS$DISK:[]DES.C").EQS."")
411 $ THEN
413 $!  Tell The User That The File Dosen't Exist.
415 $   WRITE SYS$OUTPUT ""
416 $   WRITE SYS$OUTPUT "The File DES.C Dosen't Exist."
417 $   WRITE SYS$OUTPUT ""
419 $!  Exit The Build.
421 $   EXIT
423 $! End The DES.C File Check.
425 $ ENDIF
427 $! Tell The User What We Are Building.
429 $ WRITE SYS$OUTPUT "Building ",EXE_DIR,"DES.EXE"
431 $! Compile The DES Program.
433 $ CC/OBJECT='OBJ_DIR'DES.OBJ SYS$DISK:[]DES.C
434 $ CC/OBJECT='OBJ_DIR'DES.OBJ SYS$DISK:[]CBC3_ENC.C
436 $! Link The DES Program.
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
442 $! All Done, Time To Return.
444 $ RETURN
446 $!  Compile The DES_OPTS Program.
448 $ DES_OPTS:
450 $! Check To See If We Have The Proper Libraries.
452 $ GOSUB LIB_CHECK
454 $! Check To See If We Have A Linker Option File.
456 $ GOSUB CHECK_OPT_FILE
458 $! Check To See If The File We Want To Compile Actually Exists.
460 $ IF (F$SEARCH("SYS$DISK:[]DES_OPTS.C").EQS."")
461 $ THEN
463 $!  Tell The User That The File Dosen't Exist.
465 $   WRITE SYS$OUTPUT ""
466 $   WRITE SYS$OUTPUT "The File DES_OPTS.C Dosen't Exist."
467 $   WRITE SYS$OUTPUT ""
469 $!  Exit The Build.
471 $   EXIT
473 $! End The DES_OPTS.C File Check.
475 $ ENDIF
477 $! Tell The User What We Are Building.
479 $ WRITE SYS$OUTPUT "Building ",EXE_DIR,"DES_OPTS.EXE"
481 $! Compile The DES_OPTS Program.
483 $ CC/OBJECT='OBJ_DIR'DES_OPTS.OBJ SYS$DISK:[]DES_OPTS.C
485 $! Link The DES_OPTS Program.
487 $ LINK/'DEBUGGER'/'TRACEBACK'/CONTIGUOUS/EXE='EXE_DIR'DES_OPTS.EXE -
488       'OBJ_DIR'DES_OPTS.OBJ,'LIB_NAME'/LIBRARY,'OPT_FILE'/OPTION
490 $! All Done, Time To Return.
492 $ RETURN
493 $ EXIT
495 $! Check For The Link Option FIle.
497 $ CHECK_OPT_FILE:
499 $! Check To See If We Need To Make A VAX C Option File.
501 $ IF (COMPILER.EQS."VAXC")
502 $ THEN
504 $!  Check To See If We Already Have A VAX C Linker Option File.
506 $   IF (F$SEARCH(OPT_FILE).EQS."")
507 $   THEN
509 $!    We Need A VAX C Linker Option File.
511 $     CREATE 'OPT_FILE'
512 $DECK
514 ! Default System Options File To Link Agianst 
515 ! The Sharable VAX C Runtime Library.
517 SYS$SHARE:VAXCRTL.EXE/SHARE
518 $EOD
520 $!  End The Option File Check.
522 $   ENDIF
524 $! End The VAXC Check.
526 $ ENDIF
528 $! Check To See If We Need A GNU C Option File.
530 $ IF (COMPILER.EQS."GNUC")
531 $ THEN
533 $!  Check To See If We Already Have A GNU C Linker Option File.
535 $   IF (F$SEARCH(OPT_FILE).EQS."")
536 $   THEN
538 $!    We Need A GNU C Linker Option File.
540 $     CREATE 'OPT_FILE'
541 $DECK
543 ! Default System Options File To Link Agianst 
544 ! The Sharable C Runtime Library.
546 GNU_CC:[000000]GCCLIB/LIBRARY
547 SYS$SHARE:VAXCRTL/SHARE
548 $EOD
550 $!  End The Option File Check.
552 $   ENDIF
554 $! End The GNU C Check.
556 $ ENDIF
558 $! Check To See If We Need A DEC C Option File.
560 $ IF (COMPILER.EQS."DECC")
561 $ THEN
563 $!  Check To See If We Already Have A DEC C Linker Option File.
565 $   IF (F$SEARCH(OPT_FILE).EQS."")
566 $   THEN
568 $!    Figure Out If We Need An non-VAX Or A VAX Linker Option File.
570 $     IF (F$GETSYI("CPU").LT.128)
571 $     THEN
573 $!      We Need A DEC C Linker Option File For VAX.
575 $       CREATE 'OPT_FILE'
576 $DECK
578 ! Default System Options File To Link Agianst 
579 ! The Sharable DEC C Runtime Library.
581 SYS$SHARE:DECC$SHR.EXE/SHARE
582 $EOD
584 $!    Else...
586 $     ELSE
588 $!      Create The non-VAX Linker Option File.
590 $       CREATE 'OPT_FILE'
591 $DECK
593 ! Default System Options File For non-VAX To Link Agianst 
594 ! The Sharable C Runtime Library.
596 SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
597 SYS$SHARE:CMA$OPEN_RTL/SHARE
598 $EOD
600 $!    End The DEC C Option File Check.
602 $     ENDIF
604 $!  End The Option File Search.
606 $   ENDIF
608 $! End The DEC C Check.
610 $ ENDIF
612 $!  Tell The User What Linker Option File We Are Using.
614 $ WRITE SYS$OUTPUT "Using Linker Option File ",OPT_FILE,"."     
616 $! Time To RETURN.
618 $ RETURN
620 $! Library Check.
622 $ LIB_CHECK:
624 $!  Look For The Library LIBDES.OLB.
626 $ IF (F$SEARCH(LIB_NAME).EQS."")
627 $ THEN
629 $!    Tell The User We Can't Find The [.xxx.CRYPTO.DES]LIBDES.OLB Library.
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 ""
636 $!    Since We Can't Link Without It, Exit.
638 $   EXIT
639 $ ENDIF
641 $! Time To Return.
643 $ RETURN
645 $! Check The User's Options.
647 $ CHECK_OPTIONS:
649 $! Check To See If We Are To "Just Build Everything".
651 $ IF (P1.EQS."ALL")
652 $ THEN
654 $!   P1 Is "ALL", So Build Everything.
656 $    BUILDALL = "TRUE"
658 $! Else...
660 $ ELSE
662 $!  Else, Check To See If P1 Has A Valid Argument.
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
668 $!    A Valid Argument.
670 $     BUILDALL = P1
672 $!  Else...
674 $   ELSE
676 $!    Tell The User We Don't Know What They Want.
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 ""
696 $!    Time To EXIT.
698 $     EXIT
700 $!  End The Valid Argument Check.
702 $   ENDIF
704 $! End The P1 Check.
706 $ ENDIF
708 $! Check To See If We Are To Compile Without Debugger Information.
710 $ IF (P2.EQS."NODEBUG")
711 $ THEN
713 $!   P2 Is Blank, So Compile Without Debugger Information.
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."
722 $! Else...
724 $ ELSE
726 $!  Check To See If We Are To Compile With Debugger Information.
728 $   IF (P2.EQS."DEBUG")
729 $   THEN
731 $!    Compile With Debugger Information.
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."
740 $!  Else...
742 $   ELSE
744 $!    Tell The User Entered An Invalid Option..
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 ""
753 $!    Time To EXIT.
755 $     EXIT
757 $!  End The Valid Argument Check.
759 $   ENDIF
761 $! End The P2 Check.
763 $ ENDIF
765 $! Special Threads For OpenVMS v7.1 Or Later.
767 $! Written By:  Richard Levitte
768 $!              richard@levitte.org
771 $! Check To See If We Have A Option For P4.
773 $ IF (P4.EQS."")
774 $ THEN
776 $!  Get The Version Of VMS We Are Using.
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))
782 $!  Check To See If The VMS Version Is v7.1 Or Later.
784 $   IF (TMP.GE.71)
785 $   THEN
787 $!    We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
789 $     ISSEVEN := ,PTHREAD_USE_D4
791 $!  End The VMS Version Check.
793 $   ENDIF
795 $! End The P4 Check.
797 $ ENDIF
799 $! Check To See If P3 Is Blank.
801 $ IF (P3.EQS."")
802 $ THEN
804 $!  O.K., The User Didn't Specify A Compiler, Let's Try To
805 $!  Find Out Which One To Use.
807 $!  Check To See If We Have GNU C.
809 $   IF (F$TRNLNM("GNU_CC").NES."")
810 $   THEN
812 $!    Looks Like GNUC, Set To Use GNUC.
814 $     P3 = "GNUC"
816 $!  Else...
818 $   ELSE
820 $!    Check To See If We Have VAXC Or DECC.
822 $     IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
823 $     THEN 
825 $!      Looks Like DECC, Set To Use DECC.
827 $       P3 = "DECC"
829 $!    Else...
831 $     ELSE
833 $!      Looks Like VAXC, Set To Use VAXC.
835 $       P3 = "VAXC"
837 $!    End The VAXC Compiler Check.
839 $     ENDIF
841 $!  End The DECC & VAXC Compiler Check.
843 $   ENDIF
845 $!  End The Compiler Check.
847 $ ENDIF
849 $! Set Up Initial CC Definitions, Possibly With User Ones
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
859 $!  Check To See If The User Entered A Valid Paramter.
861 $ IF (P3.EQS."VAXC").OR.(P3.EQS."DECC").OR.(P3.EQS."GNUC")
862 $ THEN
864 $!    Check To See If The User Wanted DECC.
866 $   IF (P3.EQS."DECC")
867 $   THEN
869 $!    Looks Like DECC, Set To Use DECC.
871 $     COMPILER = "DECC"
873 $!    Tell The User We Are Using DECC.
875 $     WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
877 $!    Use DECC...
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
885 $!    Define The Linker Options File Name.
887 $     OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
889 $!  End DECC Check.
891 $   ENDIF
893 $!  Check To See If We Are To Use VAXC.
895 $   IF (P3.EQS."VAXC")
896 $   THEN
898 $!    Looks Like VAXC, Set To Use VAXC.
900 $     COMPILER = "VAXC"
902 $!    Tell The User We Are Using VAX C.
904 $     WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
906 $!    Compile Using VAXC.
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
918 $!    Define <sys> As SYS$COMMON:[SYSLIB]
920 $     DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
922 $!    Define The Linker Options File Name.
924 $     OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
926 $!  End VAXC Check
928 $   ENDIF
930 $!  Check To See If We Are To Use GNU C.
932 $   IF (P3.EQS."GNUC")
933 $   THEN
935 $!    Looks Like GNUC, Set To Use GNUC.
937 $     COMPILER = "GNUC"
939 $!    Tell The User We Are Using GNUC.
941 $     WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
943 $!    Use GNU C...
945 $     CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + CCEXTRAFLAGS
947 $!    Define The Linker Options File Name.
949 $     OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
951 $!  End The GNU C Check.
953 $   ENDIF
955 $!  Set up default defines
957 $   CCDEFS = """FLAT_INC=1""," + CCDEFS
959 $!  Finish up the definition of CC.
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
977 $!  Show user the result
979 $   WRITE SYS$OUTPUT "Main Compiling Command: ",CC
981 $!  Else The User Entered An Invalid Argument.
983 $ ELSE
985 $!  Tell The User We Don't Know What They Want.
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 ""
995 $!  Time To EXIT.
997 $   EXIT
999 $! End The P3 Check.
1001 $ ENDIF
1003 $!  Time To RETURN...
1005 $ RETURN