]> git.ipfire.org Git - thirdparty/openssl.git/blame - engines/makeengines.com
Correction of make depend merge error
[thirdparty/openssl.git] / engines / makeengines.com
CommitLineData
f216fae5 1$!
11f35a03 2$! MAKEENGINES.COM
f216fae5
RL
3$! Written By: Richard Levitte
4$! richard@levitte.org
5$!
6$! This command file compiles and creates the various engines in form
7$! of shared images. They are placed in [.xxx.EXE.ENGINES], where "xxx"
006c7c6b 8$! is ALPHA, IA64 or VAX, depending on your hardware.
f216fae5
RL
9$!
10$! P1 if this is ENGINES or ALL, the engines will build, otherwise not.
11$!
12$! P2 DEBUG or NODEBUG to compile with or without debugger information.
13$!
14$! P3 VAXC for VAX C
15$! DECC for DEC C
16$! GNUC for GNU C (untested)
17$!
18$! P4 if defined, sets the TCP/IP libraries to use. UCX or TCPIP is
19$! used by default since most other implementations come with a
20$! compatibility library. The value must be one of the following:
21$!
22$! UCX for UCX
23$! SOCKETSHR for SOCKETSHR+NETLIB
24$! TCPIP for TCPIP (post UCX)
25$!
26$! P5 if defined, tells the compiler not to use special threads.
27$!
28$! P6 if defined, denotes which engines to build. If not defined,
29$! all available engines are built.
30$!
01d2e27a 31$! P7, if defined, specifies the C pointer size. Ignored on VAX.
ecff2e5c 32$! ("64=ARGV" gives more efficient code with HP C V7.3 or newer.)
01d2e27a 33$! Supported values are:
90d02be7 34$!
01d2e27a
RL
35$! "" Compile with default (/NOPOINTER_SIZE)
36$! 32 Compile with /POINTER_SIZE=32 (SHORT)
37$! 64 Compile with /POINTER_SIZE=64[=ARGV] (LONG[=ARGV])
d135906d
RL
38$! (Automatically select ARGV if compiler supports it.)
39$! 64= Compile with /POINTER_SIZE=64 (LONG).
40$! 64=ARGV Compile with /POINTER_SIZE=64=ARGV (LONG=ARGV).
01d2e27a
RL
41$!
42$! P8, if defined, specifies a directory where ZLIB files (zlib.h,
43$! libz.olb) may be found. Optionally, a non-default object library
44$! name may be included ("dev:[dir]libz_64.olb", for example).
90d02be7 45$!
f216fae5
RL
46$!-----------------------------------------------------------------------------
47$!
01d2e27a
RL
48$! Announce/identify.
49$!
50$ proc = f$environment( "procedure")
51$ write sys$output "@@@ "+ -
52 f$parse( proc, , , "name")+ f$parse( proc, , , "type")
53$!
54$ on control_c then goto exit
55$!
f216fae5
RL
56$! Set the default TCP/IP library to link against if needed
57$!
58$ TCPIP_LIB = ""
01d2e27a 59$ ZLIB_LIB = ""
f216fae5 60$!
006c7c6b 61$! Check What Architecture We Are Using.
f216fae5 62$!
006c7c6b
RL
63$ IF (F$GETSYI("CPU").LT.128)
64$ THEN
65$!
66$! The Architecture Is VAX.
67$!
49d1f665 68$ ARCH = "VAX"
006c7c6b
RL
69$!
70$! Else...
71$!
72$ ELSE
73$!
74$! The Architecture Is Alpha, IA64 or whatever comes in the future.
75$!
76$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
77$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
78$!
79$! End The Architecture Check.
80$!
81$ ENDIF
f216fae5 82$!
01d2e27a
RL
83$ ARCHD = ARCH
84$ LIB32 = "32"
85$ OPT_FILE = ""
86$ POINTER_SIZE = ""
87$!
49d1f665
RL
88$! Set the names of the engines we want to build
89$! NOTE: Some might think this list ugly. However, it's made this way to
90$! reflect the LIBNAMES variable in Makefile as closely as possible,
91$! thereby making it fairly easy to verify that the lists are the same.
92$! NOTE: gmp isn't built, as it's mostly a test engine and brings in another
93$! library that isn't necessarely ported to VMS.
94$!
95$ ENGINES = "," + P6
96$ IF ENGINES .EQS. "," THEN -
97 ENGINES = ",4758cca,aep,atalla,cswift,chil,nuron,sureware,ubsec,padlock,"
98$!
99$! GOST requires a 64-bit integer type, unavailable on VAX.
100$!
101$ IF (ARCH .NES. "VAX") THEN -
102 ENGINES = ENGINES+ ",ccgost"
103$!
01d2e27a 104$! Check options.
f216fae5
RL
105$!
106$ OPT_PHASE = P1
107$ ACCEPT_PHASE = "ALL,ENGINES"
108$ OPT_DEBUG = P2
109$ OPT_COMPILER = P3
110$ OPT_TCPIP_LIB = P4
111$ OPT_SPECIAL_THREADS = P5
90d02be7 112$ OPT_POINTER_SIZE = P7
01d2e27a 113$ ZLIB = P8
f216fae5
RL
114$
115$ GOSUB CHECK_OPTIONS
01d2e27a
RL
116$!
117$! Set the goal directories, and create them if necessary
118$!
119$ OBJ_DIR := SYS$DISK:[-.'ARCHD'.OBJ.ENGINES]
120$ EXE_DIR := SYS$DISK:[-.'ARCHD'.EXE.ENGINES]
121$ IF F$PARSE(OBJ_DIR) .EQS. "" THEN CREATE/DIRECTORY 'OBJ_DIR'
122$ IF F$PARSE(EXE_DIR) .EQS. "" THEN CREATE/DIRECTORY 'EXE_DIR'
123$!
124$! Set the goal files, and create them if necessary
125$!
126$ CRYPTO_LIB := SYS$DISK:[-.'ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO'LIB32'.OLB
127$ IF F$SEARCH(CRYPTO_LIB) .EQS. "" THEN LIBRARY/CREATE/OBJECT 'CRYPTO_LIB'
128$!
129$! Specify the destination directory in any /MAP option.
130$!
131$ if (LINKMAP .eqs. "MAP")
132$ then
133$ LINKMAP = LINKMAP+ "=''EXE_DIR'"
134$ endif
135$!
136$! Add the location prefix to the linker options file name.
137$!
138$ if (OPT_FILE .nes. "")
139$ then
140$ OPT_FILE = EXE_DIR+ OPT_FILE
141$ endif
142$!
143$! Initialise.
144$!
f216fae5
RL
145$ GOSUB INITIALISE
146$ GOSUB CHECK_OPT_FILE
147$!
006c7c6b 148$! Define what goes into each engine. VAX includes a transfer vector.
f216fae5
RL
149$!
150$ ENGINE_ = ""
006c7c6b 151$ TV_OBJ = ""
f216fae5
RL
152$ IF ARCH .EQS. "VAX"
153$ THEN
154$ ENGINE_ = "engine_vector.mar"
006c7c6b
RL
155$ TV_OBJ_NAME = OBJ_DIR + F$PARSE(ENGINE_,,,"NAME","SYNTAX_ONLY") + ".OBJ"
156$ TV_OBJ = ",''TV_OBJ_NAME'"
f216fae5 157$ ENDIF
7a3809fd 158$ ENGINE_4758cca = "e_4758cca"
f216fae5
RL
159$ ENGINE_aep = "e_aep"
160$ ENGINE_atalla = "e_atalla"
161$ ENGINE_cswift = "e_cswift"
a2c32e2d 162$ ENGINE_chil = "e_chil"
f216fae5
RL
163$ ENGINE_nuron = "e_nuron"
164$ ENGINE_sureware = "e_sureware"
165$ ENGINE_ubsec = "e_ubsec"
49d1f665 166$ ENGINE_padlock = "e_padlock"
26397d2e
RL
167$
168$ ENGINE_ccgost_SUBDIR = "ccgost"
169$ ENGINE_ccgost = "e_gost_err,gost2001_keyx,gost2001,gost89,gost94_keyx,"+ -
170 "gost_ameth,gost_asn1,gost_crypt,gost_ctl,gost_eng,"+ -
171 "gosthash,gost_keywrap,gost_md,gost_params,gost_pmeth,"+ -
172 "gost_sign"
f216fae5
RL
173$!
174$! Define which programs need to be linked with a TCP/IP library
175$!
176$ TCPIP_ENGINES = ",,"
177$ IF COMPILER .EQS. "VAXC" THEN -
178 TCPIP_ENGINES = ",,"
179$!
180$! Set up two loops, one that keeps track of the engines,
181$! and one that keeps track of all the files going into
182$! the current engine.
183$!
184$! Here's the start of the engine loop.
185$!
186$ ENGINE_COUNTER = 0
187$ ENGINE_NEXT:
188$!
189$! Extract the current engine name, and if we've reached the end, stop
190$!
191$ ENGINE_NAME = F$ELEMENT(ENGINE_COUNTER,",",ENGINES)
192$ IF (ENGINE_NAME.EQS.",") THEN GOTO ENGINE_DONE
193$!
194$ ENGINE_COUNTER = ENGINE_COUNTER + 1
195$!
196$! Set up the engine library names.
197$!
198$ LIB_ENGINE = "ENGINE_" + ENGINE_NAME
199$!
200$! Check if the library module name actually is defined
201$!
202$ IF F$TYPE('LIB_ENGINE') .EQS. ""
203$ THEN
204$ WRITE SYS$ERROR ""
205$ WRITE SYS$ERROR "The module ",ENGINE_NAME," does not exist. Continuing..."
206$ WRITE SYS$ERROR ""
207$ GOTO ENGINE_NEXT
208$ ENDIF
209$!
210$! Talk to the user
211$!
212$ IF ENGINE_NAME .NES. ""
213$ THEN
214$ WRITE SYS$OUTPUT "Compiling The ",ENGINE_NAME," Library Files. (",BUILDALL,")"
215$ ELSE
216$ WRITE SYS$OUTPUT "Compiling Support Files. (",BUILDALL,")"
217$ ENDIF
218$!
49d1f665 219$! Create a .OPT file for the object files (for a real engine name).
226a9496 220$!
49d1f665
RL
221$ IF ENGINE_NAME .NES. ""
222$ THEN
01d2e27a 223$ OPEN /WRITE OBJECTS 'EXE_DIR''ENGINE_NAME'.OPT
49d1f665 224$ ENDIF
226a9496 225$!
f216fae5
RL
226$! Here's the start of per-engine module loop.
227$!
228$ FILE_COUNTER = 0
229$ FILE_NEXT:
230$!
231$! Extract the file name from the file list, and if we've reached the end, stop
232$!
233$ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",'LIB_ENGINE')
234$ IF (FILE_NAME.EQS.",") THEN GOTO FILE_DONE
235$!
236$ FILE_COUNTER = FILE_COUNTER + 1
237$!
238$ IF FILE_NAME .EQS. "" THEN GOTO FILE_NEXT
239$!
240$! Set up the source and object reference
241$!
26397d2e
RL
242$ IF F$TYPE('LIB_ENGINE'_SUBDIR) .EQS. ""
243$ THEN
244$ SOURCE_FILE = F$PARSE(FILE_NAME,"SYS$DISK:[].C",,,"SYNTAX_ONLY")
245$ ELSE
246$ SOURCE_FILE = F$PARSE(FILE_NAME,"SYS$DISK:[."+'LIB_ENGINE'_SUBDIR+"].C",,,"SYNTAX_ONLY")
247$ ENDIF
f216fae5
RL
248$ OBJECT_FILE = OBJ_DIR + F$PARSE(FILE_NAME,,,"NAME","SYNTAX_ONLY") + ".OBJ"
249$!
250$! If we get some problem, we just go on trying to build the next module.
251$ ON WARNING THEN GOTO FILE_NEXT
252$!
253$! Check if the module we want to compile is actually there.
254$!
255$ IF F$SEARCH(SOURCE_FILE) .EQS. ""
256$ THEN
257$ WRITE SYS$OUTPUT ""
258$ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Doesn't Exist."
259$ WRITE SYS$OUTPUT ""
260$ GOTO EXIT
261$ ENDIF
262$!
263$! Talk to the user.
264$!
265$ WRITE SYS$OUTPUT " ",FILE_NAME,""
266$!
267$! Do the dirty work.
268$!
269$ ON ERROR THEN GOTO FILE_NEXT
51f38e6c 270$ IF F$EDIT(F$PARSE(SOURCE_FILE,,,"TYPE","SYNTAX_ONLY"),"UPCASE") .EQS. ".MAR"
f216fae5
RL
271$ THEN
272$ MACRO/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
273$ ELSE
274$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
275$ ENDIF
49d1f665
RL
276$!
277$! Write the entry to the .OPT file (for a real engine name).
278$!
279$ IF ENGINE_NAME .NES. ""
280$ THEN
281$ WRITE OBJECTS OBJECT_FILE
282$ ENDIF
226a9496
RL
283$!
284$! Next file
285$!
286$ GOTO FILE_NEXT
287$!
288$ FILE_DONE:
f216fae5 289$!
11f35a03
RL
290$! Do not link the support files.
291$!
006c7c6b
RL
292$ IF ENGINE_NAME .EQS. "" THEN GOTO ENGINE_NEXT
293$!
49d1f665 294$! Close the linker options file (for a real engine name).
006c7c6b 295$!
49d1f665 296$ CLOSE OBJECTS
11f35a03 297$!
f216fae5
RL
298$! Now, there are two ways to handle this. We can either build
299$! shareable images or stick the engine object file into libcrypto.
300$! For now, the latter is NOT supported.
301$!
302$!!!!! LIBRARY/REPLACE 'CRYPTO_LIB' 'OBJECT_FILE'
303$!
304$! For shareable libraries, we need to do things a little differently
305$! depending on if we link with a TCP/IP library or not.
306$!
307$ ENGINE_OPT := SYS$DISK:[]'ARCH'.OPT
01d2e27a
RL
308$ LINK /'DEBUGGER' /'LINKMAP' /'TRACEBACK' /SHARE='EXE_DIR''ENGINE_NAME'.EXE -
309 'EXE_DIR''ENGINE_NAME'.OPT /OPTIONS -
310 'TV_OBJ', -
311 'CRYPTO_LIB' /LIBRARY, -
312 'ENGINE_OPT' /OPTIONS -
313 'TCPIP_LIB' -
314 'ZLIB_LIB' -
315 ,'OPT_FILE' /OPTIONS
f216fae5 316$!
f216fae5
RL
317$! Next engine
318$!
319$ GOTO ENGINE_NEXT
320$!
321$ ENGINE_DONE:
322$!
323$! Talk to the user
324$!
325$ WRITE SYS$OUTPUT "All Done..."
326$ EXIT:
327$ GOSUB CLEANUP
328$ EXIT
329$!
330$! Check For The Link Option FIle.
331$!
332$ CHECK_OPT_FILE:
333$!
334$! Check To See If We Need To Make A VAX C Option File.
335$!
336$ IF (COMPILER.EQS."VAXC")
337$ THEN
338$!
339$! Check To See If We Already Have A VAX C Linker Option File.
340$!
341$ IF (F$SEARCH(OPT_FILE).EQS."")
342$ THEN
343$!
344$! We Need A VAX C Linker Option File.
345$!
346$ CREATE 'OPT_FILE'
347$DECK
348!
01d2e27a 349! Default System Options File To Link Against
f216fae5
RL
350! The Sharable VAX C Runtime Library.
351!
352SYS$SHARE:VAXCRTL.EXE/SHARE
353$EOD
354$!
355$! End The Option File Check.
356$!
357$ ENDIF
358$!
359$! End The VAXC Check.
360$!
361$ ENDIF
362$!
363$! Check To See If We Need A GNU C Option File.
364$!
365$ IF (COMPILER.EQS."GNUC")
366$ THEN
367$!
368$! Check To See If We Already Have A GNU C Linker Option File.
369$!
370$ IF (F$SEARCH(OPT_FILE).EQS."")
371$ THEN
372$!
373$! We Need A GNU C Linker Option File.
374$!
375$ CREATE 'OPT_FILE'
376$DECK
377!
01d2e27a 378! Default System Options File To Link Against
f216fae5
RL
379! The Sharable C Runtime Library.
380!
381GNU_CC:[000000]GCCLIB/LIBRARY
382SYS$SHARE:VAXCRTL/SHARE
383$EOD
384$!
385$! End The Option File Check.
386$!
387$ ENDIF
388$!
389$! End The GNU C Check.
390$!
391$ ENDIF
392$!
393$! Check To See If We Need A DEC C Option File.
394$!
395$ IF (COMPILER.EQS."DECC")
396$ THEN
397$!
398$! Check To See If We Already Have A DEC C Linker Option File.
399$!
400$ IF (F$SEARCH(OPT_FILE).EQS."")
401$ THEN
402$!
006c7c6b 403$! Figure Out If We Need A non-VAX Or A VAX Linker Option File.
f216fae5
RL
404$!
405$ IF ARCH .EQS. "VAX"
406$ THEN
407$!
408$! We Need A DEC C Linker Option File For VAX.
409$!
410$ CREATE 'OPT_FILE'
411$DECK
412!
01d2e27a 413! Default System Options File To Link Against
f216fae5
RL
414! The Sharable DEC C Runtime Library.
415!
416SYS$SHARE:DECC$SHR.EXE/SHARE
417$EOD
418$!
419$! Else...
420$!
421$ ELSE
422$!
006c7c6b 423$! Create The non-VAX Linker Option File.
f216fae5
RL
424$!
425$ CREATE 'OPT_FILE'
426$DECK
427!
01d2e27a 428! Default System Options File For non-VAX To Link Against
f216fae5
RL
429! The Sharable C Runtime Library.
430!
431SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
432SYS$SHARE:CMA$OPEN_RTL/SHARE
433$EOD
434$!
006c7c6b 435$! End The DEC C Option File Check.
f216fae5
RL
436$!
437$ ENDIF
438$!
439$! End The Option File Search.
440$!
441$ ENDIF
442$!
443$! End The DEC C Check.
444$!
445$ ENDIF
446$!
447$! Tell The User What Linker Option File We Are Using.
448$!
449$ WRITE SYS$OUTPUT "Using Linker Option File ",OPT_FILE,"."
450$!
451$! Time To RETURN.
452$!
453$ RETURN
454$!
455$! Check The User's Options.
456$!
457$ CHECK_OPTIONS:
458$!
459$! Check To See If OPT_PHASE Is Blank.
460$!
461$ IF (OPT_PHASE.EQS."ALL")
462$ THEN
463$!
464$! OPT_PHASE Is Blank, So Build Everything.
465$!
466$ BUILDALL = "ALL"
467$!
468$! Else...
469$!
470$ ELSE
471$!
49d1f665 472$! Else, Check To See If OPT_PHASE Has A Valid Argument.
f216fae5 473$!
892e9625 474$ IF ("," + ACCEPT_PHASE + ",") - ("," + OPT_PHASE + ",") -
cb21d001 475 .NES. ("," + ACCEPT_PHASE + ",")
f216fae5
RL
476$ THEN
477$!
49d1f665 478$! A Valid Argument.
f216fae5
RL
479$!
480$ BUILDALL = OPT_PHASE
481$!
482$! Else...
483$!
484$ ELSE
485$!
486$! Tell The User We Don't Know What They Want.
487$!
488$ WRITE SYS$OUTPUT ""
489$ WRITE SYS$OUTPUT "The option ",OPT_PHASE," is invalid. The valid options are:"
490$ WRITE SYS$OUTPUT ""
cb21d001
RL
491$ IF ("," + ACCEPT_PHASE + ",") - ",ALL," -
492 .NES. ("," + ACCEPT_PHASE + ",") THEN -
f216fae5 493 WRITE SYS$OUTPUT " ALL : just build everything."
cb21d001
RL
494$ IF ("," + ACCEPT_PHASE + ",") - ",ENGINES," -
495 .NES. ("," + ACCEPT_PHASE + ",") THEN -
f216fae5
RL
496 WRITE SYS$OUTPUT " ENGINES : to compile just the [.xxx.EXE.ENGINES]*.EXE hareable images."
497$ WRITE SYS$OUTPUT ""
498$ WRITE SYS$OUTPUT " where 'xxx' stands for:"
499$ WRITE SYS$OUTPUT ""
01d2e27a
RL
500$ WRITE SYS$OUTPUT " ALPHA[64]: Alpha architecture."
501$ WRITE SYS$OUTPUT " IA64[64] : IA64 architecture."
006c7c6b 502$ WRITE SYS$OUTPUT " VAX : VAX architecture."
f216fae5
RL
503$ WRITE SYS$OUTPUT ""
504$!
505$! Time To EXIT.
506$!
507$ EXIT
508$!
49d1f665 509$! End The Valid Argument Check.
f216fae5
RL
510$!
511$ ENDIF
512$!
513$! End The OPT_PHASE Check.
514$!
515$ ENDIF
516$!
517$! Check To See If OPT_DEBUG Is Blank.
518$!
519$ IF (OPT_DEBUG.EQS."NODEBUG")
520$ THEN
521$!
01d2e27a 522$! OPT_DEBUG Is NODEBUG, So Compile Without The Debugger Information.
f216fae5 523$!
01d2e27a
RL
524$ DEBUGGER = "NODEBUG"
525$ LINKMAP = "NOMAP"
526$ TRACEBACK = "NOTRACEBACK"
527$ GCC_OPTIMIZE = "OPTIMIZE"
528$ CC_OPTIMIZE = "OPTIMIZE"
529$ MACRO_OPTIMIZE = "OPTIMIZE"
530$ WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
531$ WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
f216fae5
RL
532$ ELSE
533$!
534$! Check To See If We Are To Compile With Debugger Information.
535$!
536$ IF (OPT_DEBUG.EQS."DEBUG")
537$ THEN
538$!
539$! Compile With Debugger Information.
540$!
541$ DEBUGGER = "DEBUG"
01d2e27a 542$ LINKMAP = "MAP"
f216fae5
RL
543$ TRACEBACK = "TRACEBACK"
544$ GCC_OPTIMIZE = "NOOPTIMIZE"
545$ CC_OPTIMIZE = "NOOPTIMIZE"
546$ MACRO_OPTIMIZE = "NOOPTIMIZE"
547$ WRITE SYS$OUTPUT "Debugger Information Will Be Produced During Compile."
548$ WRITE SYS$OUTPUT "Compiling Without Compiler Optimization."
549$ ELSE
550$!
01d2e27a 551$! They Entered An Invalid Option.
f216fae5
RL
552$!
553$ WRITE SYS$OUTPUT ""
554$ WRITE SYS$OUTPUT "The Option ",OPT_DEBUG," Is Invalid. The Valid Options Are:"
555$ WRITE SYS$OUTPUT ""
556$ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information."
557$ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information."
558$ WRITE SYS$OUTPUT ""
559$!
560$! Time To EXIT.
561$!
562$ EXIT
563$!
49d1f665 564$! End The Valid Argument Check.
f216fae5
RL
565$!
566$ ENDIF
567$!
568$! End The OPT_DEBUG Check.
569$!
570$ ENDIF
571$!
572$! Special Threads For OpenVMS v7.1 Or Later
573$!
574$! Written By: Richard Levitte
575$! richard@levitte.org
576$!
577$!
578$! Check To See If We Have A Option For OPT_SPECIAL_THREADS.
579$!
580$ IF (OPT_SPECIAL_THREADS.EQS."")
581$ THEN
582$!
583$! Get The Version Of VMS We Are Using.
584$!
585$ ISSEVEN :=
586$ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION")))
587$ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
588$!
589$! Check To See If The VMS Version Is v7.1 Or Later.
590$!
591$ IF (TMP.GE.71)
592$ THEN
593$!
594$! We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
595$!
596$ ISSEVEN := ,PTHREAD_USE_D4
597$!
598$! End The VMS Version Check.
599$!
600$ ENDIF
601$!
602$! End The OPT_SPECIAL_THREADS Check.
603$!
604$ ENDIF
605$!
01d2e27a 606$! Check OPT_POINTER_SIZE (P7).
90d02be7 607$!
01d2e27a 608$ IF (OPT_POINTER_SIZE .NES. "") .AND. (ARCH .NES. "VAX")
90d02be7 609$ THEN
90d02be7 610$!
01d2e27a 611$ IF (OPT_POINTER_SIZE .EQS. "32")
90d02be7 612$ THEN
ecff2e5c 613$ POINTER_SIZE = " /POINTER_SIZE=32"
90d02be7 614$ ELSE
d135906d
RL
615$ POINTER_SIZE = F$EDIT( OPT_POINTER_SIZE, "COLLAPSE, UPCASE")
616$ IF ((POINTER_SIZE .EQS. "64") .OR. -
617 (POINTER_SIZE .EQS. "64=") .OR. -
618 (POINTER_SIZE .EQS. "64=ARGV"))
90d02be7 619$ THEN
01d2e27a 620$ ARCHD = ARCH+ "_64"
90d02be7 621$ LIB32 = ""
ecff2e5c 622$ POINTER_SIZE = " /POINTER_SIZE=64"
90d02be7
RL
623$ ELSE
624$!
01d2e27a 625$! Tell The User Entered An Invalid Option.
90d02be7
RL
626$!
627$ WRITE SYS$OUTPUT ""
01d2e27a
RL
628$ WRITE SYS$OUTPUT "The Option ", OPT_POINTER_SIZE, -
629 " Is Invalid. The Valid Options Are:"
90d02be7 630$ WRITE SYS$OUTPUT ""
d135906d
RL
631$ WRITE SYS$OUTPUT -
632 " """" : Compile with default (short) pointers."
633$ WRITE SYS$OUTPUT -
634 " 32 : Compile with 32-bit (short) pointers."
635$ WRITE SYS$OUTPUT -
636 " 64 : Compile with 64-bit (long) pointers (auto ARGV)."
637$ WRITE SYS$OUTPUT -
638 " 64= : Compile with 64-bit (long) pointers (no ARGV)."
639$ WRITE SYS$OUTPUT -
640 " 64=ARGV : Compile with 64-bit (long) pointers (ARGV)."
90d02be7 641$ WRITE SYS$OUTPUT ""
01d2e27a 642$!
90d02be7
RL
643$! Time To EXIT.
644$!
01d2e27a 645$ EXIT
90d02be7
RL
646$!
647$ ENDIF
01d2e27a 648$!
90d02be7
RL
649$ ENDIF
650$!
651$! End The OPT_POINTER_SIZE Check.
652$!
653$ ENDIF
654$!
01d2e27a
RL
655$! Set basic C compiler /INCLUDE directories.
656$!
657$ CC_INCLUDES = "SYS$DISK:[],SYS$DISK:[.VENDOR_DEFNS]"
658$!
f216fae5
RL
659$! Check To See If OPT_COMPILER Is Blank.
660$!
661$ IF (OPT_COMPILER.EQS."")
662$ THEN
663$!
664$! O.K., The User Didn't Specify A Compiler, Let's Try To
665$! Find Out Which One To Use.
666$!
667$! Check To See If We Have GNU C.
668$!
669$ IF (F$TRNLNM("GNU_CC").NES."")
670$ THEN
671$!
672$! Looks Like GNUC, Set To Use GNUC.
673$!
674$ OPT_COMPILER = "GNUC"
675$!
676$! Else...
677$!
678$ ELSE
679$!
680$! Check To See If We Have VAXC Or DECC.
681$!
006c7c6b 682$ IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
f216fae5
RL
683$ THEN
684$!
685$! Looks Like DECC, Set To Use DECC.
686$!
687$ OPT_COMPILER = "DECC"
688$!
689$! Else...
690$!
691$ ELSE
692$!
693$! Looks Like VAXC, Set To Use VAXC.
694$!
695$ OPT_COMPILER = "VAXC"
696$!
697$! End The VAXC Compiler Check.
698$!
699$ ENDIF
700$!
701$! End The DECC & VAXC Compiler Check.
702$!
703$ ENDIF
704$!
705$! End The Compiler Check.
706$!
707$ ENDIF
708$!
709$! Check To See If We Have A Option For OPT_TCPIP_LIB.
710$!
711$ IF (OPT_TCPIP_LIB.EQS."")
712$ THEN
713$!
714$! Find out what socket library we have available
715$!
716$ IF F$PARSE("SOCKETSHR:") .NES. ""
717$ THEN
718$!
719$! We have SOCKETSHR, and it is my opinion that it's the best to use.
720$!
721$ OPT_TCPIP_LIB = "SOCKETSHR"
722$!
723$! Tell the user
724$!
725$ WRITE SYS$OUTPUT "Using SOCKETSHR for TCP/IP"
726$!
727$! Else, let's look for something else
728$!
729$ ELSE
730$!
731$! Like UCX (the reason to do this before Multinet is that the UCX
732$! emulation is easier to use...)
733$!
734$ IF F$TRNLNM("UCX$IPC_SHR") .NES. "" -
735 .OR. F$PARSE("SYS$SHARE:UCX$IPC_SHR.EXE") .NES. "" -
736 .OR. F$PARSE("SYS$LIBRARY:UCX$IPC.OLB") .NES. ""
737$ THEN
738$!
739$! Last resort: a UCX or UCX-compatible library
740$!
741$ OPT_TCPIP_LIB = "UCX"
742$!
743$! Tell the user
744$!
745$ WRITE SYS$OUTPUT "Using UCX or an emulation thereof for TCP/IP"
746$!
747$! That was all...
748$!
749$ ENDIF
750$ ENDIF
751$ ENDIF
752$!
753$! Set Up Initial CC Definitions, Possibly With User Ones
754$!
755$ CCDEFS = "TCPIP_TYPE_''OPT_TCPIP_LIB',DSO_VMS"
756$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
757$ CCEXTRAFLAGS = ""
758$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
17d45dec
RL
759$ CCDISABLEWARNINGS = "" !!! "MAYLOSEDATA3" !!! "LONGLONGTYPE,LONGLONGSUFX"
760$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. ""
761$ THEN
762$ IF CCDISABLEWARNINGS .NES. "" THEN CCDISABLEWARNINGS = CCDISABLEWARNINGS + ","
763$ CCDISABLEWARNINGS = CCDISABLEWARNINGS + USER_CCDISABLEWARNINGS
764$ ENDIF
f216fae5 765$!
01d2e27a
RL
766$! Check To See If We Have A ZLIB Option.
767$!
768$ IF (ZLIB .NES. "")
769$ THEN
770$!
771$! Check for expected ZLIB files.
772$!
773$ err = 0
774$ file1 = f$parse( "zlib.h", ZLIB, , , "SYNTAX_ONLY")
775$ if (f$search( file1) .eqs. "")
776$ then
777$ WRITE SYS$OUTPUT ""
778$ WRITE SYS$OUTPUT "The Option ", ZLIB, " Is Invalid."
779$ WRITE SYS$OUTPUT " Can't find header: ''file1'"
780$ err = 1
781$ endif
782$ file1 = f$parse( "A.;", ZLIB)- "A.;"
783$!
784$ file2 = f$parse( ZLIB, "libz.olb", , , "SYNTAX_ONLY")
785$ if (f$search( file2) .eqs. "")
786$ then
787$ if (err .eq. 0)
788$ then
789$ WRITE SYS$OUTPUT ""
790$ WRITE SYS$OUTPUT "The Option ", ZLIB, " Is Invalid."
791$ endif
792$ WRITE SYS$OUTPUT " Can't find library: ''file2'"
793$ WRITE SYS$OUTPUT ""
794$ err = err+ 2
795$ endif
796$ if (err .eq. 1)
797$ then
798$ WRITE SYS$OUTPUT ""
799$ endif
800$!
801$ if (err .ne. 0)
802$ then
803$ EXIT
804$ endif
805$!
806$ CCDEFS = """ZLIB=1"", "+ CCDEFS
807$ CC_INCLUDES = CC_INCLUDES+ ", "+ file1
808$ ZLIB_LIB = ", ''file2' /library"
809$!
810$! Print info
811$!
812$ WRITE SYS$OUTPUT "ZLIB library spec: ", file2
813$!
814$! End The ZLIB Check.
815$!
816$ ENDIF
817$!
818$! Check To See If The User Entered A Valid Parameter.
f216fae5
RL
819$!
820$ IF (OPT_COMPILER.EQS."VAXC").OR.(OPT_COMPILER.EQS."DECC").OR.(OPT_COMPILER.EQS."GNUC")
821$ THEN
822$!
823$! Check To See If The User Wanted DECC.
824$!
825$ IF (OPT_COMPILER.EQS."DECC")
826$ THEN
827$!
828$! Looks Like DECC, Set To Use DECC.
829$!
830$ COMPILER = "DECC"
831$!
832$! Tell The User We Are Using DECC.
833$!
834$ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
835$!
836$! Use DECC...
837$!
838$ CC = "CC"
839$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
840 THEN CC = "CC/DECC"
ecff2e5c 841$ CC = CC + " /''CC_OPTIMIZE' /''DEBUGGER' /STANDARD=RELAXED"+ -
d135906d 842 "''POINTER_SIZE' /NOLIST /PREFIX=ALL" + -
ecff2e5c 843 " /INCLUDE=(''CC_INCLUDES') " + -
01d2e27a 844 CCEXTRAFLAGS
f216fae5
RL
845$!
846$! Define The Linker Options File Name.
847$!
01d2e27a 848$ OPT_FILE = "VAX_DECC_OPTIONS.OPT"
f216fae5
RL
849$!
850$! End DECC Check.
851$!
852$ ENDIF
853$!
854$! Check To See If We Are To Use VAXC.
855$!
856$ IF (OPT_COMPILER.EQS."VAXC")
857$ THEN
858$!
859$! Looks Like VAXC, Set To Use VAXC.
860$!
861$ COMPILER = "VAXC"
862$!
863$! Tell The User We Are Using VAX C.
864$!
865$ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
866$!
867$! Compile Using VAXC.
868$!
869$ CC = "CC"
006c7c6b 870$ IF ARCH.NES."VAX"
f216fae5
RL
871$ THEN
872$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!"
873$ EXIT
874$ ENDIF
875$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
876$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
01d2e27a 877 "/INCLUDE=(''CC_INCLUDES')" + -
f216fae5
RL
878 CCEXTRAFLAGS
879$ CCDEFS = """VAXC""," + CCDEFS
880$!
881$! Define <sys> As SYS$COMMON:[SYSLIB]
882$!
883$ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
884$!
885$! Define The Linker Options File Name.
886$!
01d2e27a 887$ OPT_FILE = "VAX_VAXC_OPTIONS.OPT"
f216fae5
RL
888$!
889$! End VAXC Check
890$!
891$ ENDIF
892$!
893$! Check To See If We Are To Use GNU C.
894$!
895$ IF (OPT_COMPILER.EQS."GNUC")
896$ THEN
897$!
898$! Looks Like GNUC, Set To Use GNUC.
899$!
900$ COMPILER = "GNUC"
901$!
902$! Tell The User We Are Using GNUC.
903$!
904$ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
905$!
906$! Use GNU C...
907$!
908$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
01d2e27a 909 "/INCLUDE=(''CC_INCLUDES')" + -
f216fae5
RL
910 CCEXTRAFLAGS
911$!
912$! Define The Linker Options File Name.
913$!
01d2e27a 914$ OPT_FILE = "VAX_GNUC_OPTIONS.OPT"
f216fae5
RL
915$!
916$! End The GNU C Check.
917$!
918$ ENDIF
919$!
920$! Set up default defines
921$!
922$ CCDEFS = """FLAT_INC=1""," + CCDEFS
923$!
924$! Finish up the definition of CC.
925$!
926$ IF COMPILER .EQS. "DECC"
927$ THEN
17d45dec
RL
928$! Not all compiler versions support MAYLOSEDATA3.
929$ OPT_TEST = "MAYLOSEDATA3"
930$ DEFINE /USER_MODE SYS$ERROR NL:
931$ DEFINE /USER_MODE SYS$OUTPUT NL:
932$ 'CC' /NOCROSS_REFERENCE /NOLIST /NOOBJECT -
933 /WARNINGS = DISABLE = ('OPT_TEST', EMPTYFILE) NL:
934$ IF ($SEVERITY)
935$ THEN
936$ IF CCDISABLEWARNINGS .NES. "" THEN -
937 CCDISABLEWARNINGS = CCDISABLEWARNINGS+ ","
938$ CCDISABLEWARNINGS = CCDISABLEWARNINGS+ OPT_TEST
939$ ENDIF
f216fae5
RL
940$ IF CCDISABLEWARNINGS .NES. ""
941$ THEN
ecff2e5c 942$ CCDISABLEWARNINGS = " /WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
f216fae5
RL
943$ ENDIF
944$ ELSE
945$ CCDISABLEWARNINGS = ""
946$ ENDIF
ecff2e5c 947$ CC = CC + " /DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
f216fae5
RL
948$!
949$! Show user the result
950$!
951$ WRITE/SYMBOL SYS$OUTPUT "Main C Compiling Command: ",CC
952$!
49d1f665 953$! Else The User Entered An Invalid Argument.
f216fae5
RL
954$!
955$ ELSE
956$!
957$! Tell The User We Don't Know What They Want.
958$!
959$ WRITE SYS$OUTPUT ""
960$ WRITE SYS$OUTPUT "The Option ",OPT_COMPILER," Is Invalid. The Valid Options Are:"
961$ WRITE SYS$OUTPUT ""
962$ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C."
963$ WRITE SYS$OUTPUT " DECC : To Compile With DEC C."
964$ WRITE SYS$OUTPUT " GNUC : To Compile With GNU C."
965$ WRITE SYS$OUTPUT ""
966$!
967$! Time To EXIT.
968$!
969$ EXIT
970$!
49d1f665 971$! End The Valid Argument Check.
f216fae5
RL
972$!
973$ ENDIF
974$!
975$! Build a MACRO command for the architecture at hand
976$!
01d2e27a
RL
977$ IF ARCH .EQS. "VAX"
978$ THEN
979$ MACRO = "MACRO/''DEBUGGER'"
980$ ELSE
981$ MACRO = "MACRO/MIGRATION/''DEBUGGER'/''MACRO_OPTIMIZE'"
982$ ENDIF
f216fae5
RL
983$!
984$! Show user the result
985$!
986$ WRITE/SYMBOL SYS$OUTPUT "Main MACRO Compiling Command: ",MACRO
987$!
988$! Time to check the contents, and to make sure we get the correct library.
989$!
990$ IF OPT_TCPIP_LIB.EQS."SOCKETSHR" .OR. OPT_TCPIP_LIB.EQS."MULTINET" -
991 .OR. OPT_TCPIP_LIB.EQS."UCX" .OR. OPT_TCPIP_LIB.EQS."TCPIP" -
992 .OR. OPT_TCPIP_LIB.EQS."NONE"
993$ THEN
994$!
995$! Check to see if SOCKETSHR was chosen
996$!
997$ IF OPT_TCPIP_LIB.EQS."SOCKETSHR"
998$ THEN
999$!
1000$! Set the library to use SOCKETSHR
1001$!
01d2e27a 1002$ TCPIP_LIB = ",SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT /OPTIONS"
f216fae5
RL
1003$!
1004$! Done with SOCKETSHR
1005$!
1006$ ENDIF
1007$!
1008$! Check to see if MULTINET was chosen
1009$!
1010$ IF OPT_TCPIP_LIB.EQS."MULTINET"
1011$ THEN
1012$!
1013$! Set the library to use UCX emulation.
1014$!
1015$ OPT_TCPIP_LIB = "UCX"
1016$!
1017$! Done with MULTINET
1018$!
1019$ ENDIF
1020$!
1021$! Check to see if UCX was chosen
1022$!
1023$ IF OPT_TCPIP_LIB.EQS."UCX"
1024$ THEN
1025$!
1026$! Set the library to use UCX.
1027$!
01d2e27a 1028$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT /OPTIONS"
f216fae5
RL
1029$ IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
1030$ THEN
01d2e27a 1031$ TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT /OPTIONS"
f216fae5
RL
1032$ ELSE
1033$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
01d2e27a 1034 TCPIP_LIB = ",SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT /OPTIONS"
f216fae5
RL
1035$ ENDIF
1036$!
1037$! Done with UCX
1038$!
1039$ ENDIF
1040$!
1041$! Check to see if TCPIP was chosen
1042$!
1043$ IF OPT_TCPIP_LIB.EQS."TCPIP"
1044$ THEN
1045$!
1046$! Set the library to use TCPIP (post UCX).
1047$!
01d2e27a 1048$ TCPIP_LIB = ",SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT /OPTIONS"
f216fae5
RL
1049$!
1050$! Done with TCPIP
1051$!
1052$ ENDIF
1053$!
1054$! Check to see if NONE was chosen
1055$!
1056$ IF OPT_TCPIP_LIB.EQS."NONE"
1057$ THEN
1058$!
1059$! Do not use a TCPIP library.
1060$!
1061$ TCPIP_LIB = ""
1062$!
1063$! Done with TCPIP
1064$!
1065$ ENDIF
1066$!
1067$! Print info
1068$!
01d2e27a 1069$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB- ","
f216fae5 1070$!
49d1f665 1071$! Else The User Entered An Invalid Argument.
f216fae5
RL
1072$!
1073$ ELSE
1074$!
1075$! Tell The User We Don't Know What They Want.
1076$!
1077$ WRITE SYS$OUTPUT ""
1078$ WRITE SYS$OUTPUT "The Option ",OPT_TCPIP_LIB," Is Invalid. The Valid Options Are:"
1079$ WRITE SYS$OUTPUT ""
1080$ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library."
1081$ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library."
1082$ WRITE SYS$OUTPUT " TCPIP : To link with TCPIP (post UCX) TCP/IP library."
1083$ WRITE SYS$OUTPUT ""
1084$!
1085$! Time To EXIT.
1086$!
1087$ EXIT
1088$!
1089$! Done with TCP/IP libraries
1090$!
1091$ ENDIF
1092$!
1093$! Time To RETURN...
1094$!
1095$ RETURN
1096$!
1097$ INITIALISE:
1098$!
1099$! Save old value of the logical name OPENSSL
1100$!
1101$ __SAVE_OPENSSL = F$TRNLNM("OPENSSL","LNM$PROCESS_TABLE")
1102$!
1103$! Save directory information
1104$!
1105$ __HERE = F$PARSE(F$PARSE("A.;",F$ENVIRONMENT("PROCEDURE"))-"A.;","[]A.;") - "A.;"
1106$ __HERE = F$EDIT(__HERE,"UPCASE")
1107$ __TOP = __HERE - "ENGINES]"
1108$ __INCLUDE = __TOP + "INCLUDE.OPENSSL]"
1109$!
1110$! Set up the logical name OPENSSL to point at the include directory
1111$!
01d2e27a 1112$ DEFINE OPENSSL /NOLOG '__INCLUDE'
f216fae5
RL
1113$!
1114$! Done
1115$!
1116$ RETURN
1117$!
1118$ CLEANUP:
1119$!
01d2e27a 1120$! Restore the saved logical name OPENSSL, if it had a value.
f216fae5 1121$!
01d2e27a
RL
1122$ if (f$type( __SAVE_OPENSSL) .nes. "")
1123$ then
1124$ IF __SAVE_OPENSSL .EQS. ""
1125$ THEN
1126$ DEASSIGN OPENSSL
1127$ ELSE
1128$ DEFINE /NOLOG OPENSSL '__SAVE_OPENSSL'
1129$ ENDIF
1130$ endif
1131$!
1132$! Close any open files.
1133$!
1134$ if (f$trnlnm( "objects", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then -
1135 close objects
f216fae5
RL
1136$!
1137$! Done
1138$!
1139$ RETURN
01d2e27a 1140$!