This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document UNTIE. Also tweak implementation to suppress the 'inner references'
[perl5.git] / configure.com
CommitLineData
570bb66e 1$ sav_ver = 'F$VERIFY(0)
97abc6ad
HM
2$! SET VERIFY
3$!
570bb66e 4$! For example, if you unpacked perl into: [USER.PERL-5n...] then you will
e6df7ed1 5$! want to cd into the tree and execute Configure:
97abc6ad 6$!
a3ef2c6f 7$! $ SET DEFAULT [USER.PERL5_xxx]
e6df7ed1 8$! $ @Configure
97abc6ad
HM
9$!
10$! or
11$!
a3ef2c6f 12$! $ SET DEFAULT [USER.PERL5_xxx]
e6df7ed1 13$! $ @Configure "-des"
97abc6ad
HM
14$!
15$! That's it. If you get into a bind trying to build perl on VMS then
429a5e67 16$! definitely read through the README.VMS file.
146174a9 17$! Beyond that send email to vmsperl@perl.org
97abc6ad
HM
18$!
19$! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20$!
97abc6ad 21$! send suggestions to:
a3ef2c6f 22$! Dan Sugalski <dan@sidhe.org>
97abc6ad
HM
23$! Thank you!!!!
24$!
25$! Adapted and converted from Larry Wall & Andy Dougherty's
429a5e67 26$! "Configure generated by metaconfig 3.0 PL60." by Peter Prymmer
146174a9
CB
27$! (a Bourne sh[ell] script for configuring the installation of perl
28$! on non-VMS systems) in the perl5.002|3 epoch (spring/summer 1996)
97abc6ad
HM
29$! with much valuable help from Charles Bailey &
30$! the whole VMSPerl crew.
429a5e67 31$! Extended and messed about with by Dan Sugalski
97abc6ad 32$!
ccc2aad8 33$ sav_ver = F$VERIFY(0)
97abc6ad
HM
34$!
35$! VMS-isms we will need:
36$ echo = "write sys$output "
37$ cat = "type"
a5fddd44 38$ delete := delete ! local symbol overrides globals with qualifiers
97abc6ad 39$ gcc_symbol = "gcc"
570bb66e 40$ ld = "Link"
97abc6ad
HM
41$ ans = ""
42$ macros = ""
c645ec3f 43$ extra_flags = ""
498336ed 44$ user_c_flags = ""
498336ed
CB
45$ use_ieee_math = "n"
46$ be_case_sensitive = "n"
a3ef2c6f 47$ use_vmsdebug_perl = "n"
f53b4005
CB
48$ use64bitall = "n"
49$ use64bitint = "n"
97abc6ad 50$ C_Compiler_Replace = "CC="
429a5e67
DS
51$ Thread_Live_Dangerously = "MT="
52$ use_two_pot_malloc = "N"
53$ use_pack_malloc = "N"
54$ use_debugmalloc = "N"
570bb66e 55$ ccflags = ""
97abc6ad 56$ vms_default_directory_name = F$ENVIRONMENT("DEFAULT")
570bb66e
JH
57$ max_allowed_dir_depth = 3 ! e.g. [A.B.PERLxxx] not [A.B.C.PERLxxx]
58$! max_allowed_dir_depth = 2 ! e.g. [A.PERLxxx] not [A.B.PERLxxx]
97abc6ad
HM
59$!
60$ vms_filcnt = F$GETJPI ("","FILCNT")
61$!
62$!: compute my invocation name
63$ me = F$ENVIRONMENT("PROCEDURE")
64$!
65$! Many null statements (begin with colon ':') in the Bourne shell version of
66$! this script serve as comments/placeholders. I have retained some of the ones
67$! that will help you compare this .COM file to the sh version - as well as
68$! leave placeholders for future improvements to this .COM file.
69$! sfn = VMS "skipped for now"
70$!
71$!: Proper PATH separator !sfn
72$!: Proper PATH setting !sfn
73$!: Sanity checks !sfn "Say '@''$me''"
74$!: On HP-UX, large Configure scripts may exercise a bug in /bin/sh !sfn
75$!: Configure runs within the UU subdirectory !->after find MANIFEST
76$! <big long list of default values (mostly null)>
77$!: We must find out about Eunice early !(?)
78$!: list of known cpp symbols, sorted alphabetically !sfn
79$! al = al + "..."
80$!: default library list !sfn
81$! <no hints files in use (yet?)>
82$!: Extra object files, if any, needed on this platform. !sfn
83$!: Possible local include directories to search. !sfn
84$!: Set locincpth to "" in a hint file to defeat local include searches. !sfn
85$!locincpth="/usr/local/include /opt/local/include /usr/gnu/include" !sfn
86$!locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
87$!: no include file wanted by default !sfn
88$!inclwanted='' !sfn
89$!: Possible local library directories to search. !sfn
90$!loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib" !sfn
91$!loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib" !sfn
92$!: general looking path for locating libraries !sfn
93$!glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib" !sfn
94$!glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small" !sfn
95$!glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib" !sfn
96$!: Private path used by Configure to find libraries. Its value !sfn
97$!: is prepended to libpth. This variable takes care of special !sfn
98$!: machines, like the mips. Usually, it should be empty. !sfn
99$!plibpth='' !sfn
100$!: full support for void wanted by default !sfn
101$!defvoidused=15 !sfn
102$!: List of libraries we want. !sfn
103$!libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl' !sfn
104$!libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt" !sfn
105$!libswanted="$libswanted ucb bsd BSD PW x" !sfn
106$!: We probably want to search /usr/shlib before most other libraries. !sfn
107$!: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist. !sfn
108$!glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'` !sfn
109$!glibpth="/usr/shlib $glibpth" !sfn
110$!: Do not use vfork unless overridden by a hint file. !sfn
111$!usevfork=false !sfn
112$!: script used to extract .SH files with variable substitutions !sfn
113$!: produce awk script to parse command line options !sfn
114$!sfn (assume no sed awk) see below
115$!: process the command line options
116$!
117$!: set up default values
118$ fastread=""
119$ reuseval="false"
c886fb20 120$ maniskip = "false"
570bb66e 121$ IF F$TYPE(config_sh) .EQS. "" THEN config_sh=""
97abc6ad
HM
122$ alldone=""
123$ error=""
124$ silent=""
125$ extractsh=""
126$ override=""
127$ knowitall=""
570bb66e
JH
128$ Using_Dec_C = "n"
129$ Using_Gnu_C = "n"
130$ using_cxx = "n"
97abc6ad 131$ Dec_C_Version = ""
570bb66e 132$ cxxversion = ""
97abc6ad 133$ use_threads = "F"
498336ed
CB
134$ use_5005_threads = "N"
135$ use_ithreads = "N"
97abc6ad
HM
136$!
137$!: option parsing
08c7cbbb 138$ config_args = ""
97abc6ad
HM
139$ IF (P1 .NES. "")
140$ THEN !one or more switches was thrown
141$ i = 1
142$ bang = 0
143$Param_loop:
08c7cbbb
GS
144$ IF (P'i'.NES."")
145$ THEN
146$ bang = bang + 1
147$ config_args = config_args + F$FAO(" !AS",P'i')
148$ ENDIF
97abc6ad
HM
149$ i = i + 1
150$ IF (i.LT.9) THEN GOTO Param_loop !DCL allows P1..P8
151$!
152$ i = 1
153$Opt_loop:
154$ IF (F$EXTRACT(0,1,P'i') .EQS. "-") THEN P'i' = P'i' - "-"
155$ IF (F$EXTRACT(0,1,P'i') .EQS. "/") THEN P'i' = P'i' - "/"
156$Remove_quotation_mark:
157$ P'i' = P'i' - """"
158$ IF F$LOCATE("""",P'i') .LT. F$LENGTH(P'i') THEN GOTO Remove_quotation_mark
159$ gotopt = "f" !"alse"
160$ gotshortopt = "f" !"alse"
161$ IF (F$EXTRACT(0,1,P'i') .EQS. "d")
162$ THEN
163$ fastread = "yes"
164$ gotopt = "t" !"rue"
165$ P'i' = P'i' - "d"
166$ gotshortopt = "t" !"rue"
167$ ENDIF
168$ IF (F$EXTRACT(0,1,P'i') .EQS. "e")
169$ THEN
170$ alldone = "cont"
171$ gotopt = "t"
172$ P'i' = P'i' - "e"
173$ gotshortopt = "t"
174$ ENDIF
570bb66e 175$ IF (F$EXTRACT(0,1,P'i') .EQS. "f") ! "-f"
97abc6ad
HM
176$ THEN
177$ P'i' = P'i' - "f"
178$ config_sh = P'i'
179$ IF (F$SEARCH(config_sh).NES."")
180$ THEN
8560c20d
CB
181$ test_config_sh = F$FILE_ATTRIBUTES(config_sh,"PRO")
182$ IF (F$LOCATE("R",test_config_sh).NE.F$LENGTH(test_config_sh))
97abc6ad 183$ THEN
570bb66e 184$ config_dflt = "y"
97abc6ad
HM
185$ CONTINUE !at this point check UIC && if test allows...
186$ !to be continued ?
187$ ELSE
188$ echo "''me': cannot read config file ''config_sh'."
189$ error="true"
190$ ENDIF
191$ ELSE
192$ echo "''me': cannot read config file ''config_sh'."
193$ error="true"
194$ ENDIF
195$ gotopt = "t"
196$ ENDIF
570bb66e 197$ IF (F$EXTRACT(0,1,P'i') .EQS. "h") ! "-h"
97abc6ad
HM
198$ THEN
199$ error = "true"
200$ gotopt = "t"
201$ P'i' = P'i' - "h"
202$ gotshortopt = "t"
203$ ENDIF
570bb66e 204$ IF (F$EXTRACT(0,1,P'i') .EQS. "m") ! "-m"
c886fb20
CB
205$ THEN
206$ maniskip = "true"
207$ gotopt = "t"
208$ P'i' = P'i' - "m"
209$ gotshortopt = "t"
210$ ENDIF
570bb66e 211$ IF (F$EXTRACT(0,1,P'i') .EQS. "r") ! "-r"
97abc6ad
HM
212$ THEN
213$ reuseval = "true"
214$ gotopt = "t"
215$ P'i' = P'i' - "r"
216$ gotshortopt = "t"
217$ ENDIF
570bb66e 218$ IF (F$EXTRACT(0,1,P'i') .EQS. "s") ! "-s"
97abc6ad
HM
219$ THEN
220$ silent = "true"
221$ gotopt = "t"
222$ P'i' = P'i' - "s"
223$ gotshortopt = "t"
224$ ENDIF
570bb66e 225$ IF (F$EXTRACT(0,1,P'i') .EQS. "E") ! "-E"
97abc6ad
HM
226$ THEN
227$ alldone = "exit"
228$ gotopt = "t"
229$ ENDIF
570bb66e 230$ IF (F$EXTRACT(0,1,P'i') .EQS. "K") ! "-K"
97abc6ad
HM
231$ THEN
232$ knowitall = "true"
233$ gotopt = "t"
234$ P'i' = P'i' - "K"
235$ gotshortopt = "t"
236$ ENDIF
570bb66e 237$ IF (F$EXTRACT(0,1,P'i') .EQS. "O") ! "-O"
97abc6ad
HM
238$ THEN
239$ override = "true"
240$ gotopt = "t"
241$ P'i' = P'i' - "O"
242$ gotshortopt = "t"
243$ ENDIF
570bb66e 244$ IF (F$EXTRACT(0,1,P'i') .EQS. "S") ! "-S"
97abc6ad 245$ THEN
570bb66e 246$ extractsh = "true" !VMS? Yes with munchconfig
97abc6ad
HM
247$ gotopt = "t"
248$ P'i' = P'i' - "S"
249$ gotshortopt = "t"
250$ ENDIF
570bb66e 251$ IF (F$EXTRACT(0,1,P'i') .EQS. "D") ! "-D"
97abc6ad
HM
252$ THEN
253$ P'i' = P'i' - "D"
97abc6ad
HM
254$ IF (F$LOCATE("=",P'i') .EQ. F$LENGTH(P'i'))
255$ THEN
570bb66e
JH
256$ tmp = P'i' + "=""define"""
257$ 'tmp
258$ DELETE/SYMBOL tmp
97abc6ad
HM
259$ ELSE
260$ IF (F$LOCATE("=",P'i') .EQ. (F$LENGTH(P'i') - 1))
261$ THEN
262$ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE")
263$ echo "''me': use '-Usymbol=val' not '-Dsymbol='."
264$ echo "''me': ignoring -D",P'i'
265$ ELSE
570bb66e
JH
266$ tmp = F$EXTRACT(0,F$LOCATE("=",P'i'),P'i')
267$ tmp = tmp + "=""" + F$EXTRACT(F$LOCATE("=",P'i')+1,F$LENGTH(P'i'),P'i') + """"
268$ 'tmp
269$ DELETE/SYMBOL tmp
97abc6ad
HM
270$ ENDIF
271$ ENDIF
97abc6ad
HM
272$ gotopt = "t"
273$ ENDIF
570bb66e 274$ IF (F$EXTRACT(0,1,P'i') .EQS. "U") ! "-U"
97abc6ad
HM
275$ THEN
276$ P'i' = P'i' - "U"
277$ IF (F$LOCATE("=",P'i') .EQ. F$LENGTH(P'i'))
278$ THEN
570bb66e
JH
279$ tmp = P'i' + "="""""
280$ 'tmp
281$ DELETE/SYMBOL tmp
97abc6ad
HM
282$ ELSE
283$ IF (F$LOCATE("=",P'i') .LT. (F$LENGTH(P'i') - 1))
284$ THEN
285$ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE")
286$ echo "''me': use '-Dsymbol=val' not '-Usymbol=val'."
287$ echo "''me': ignoring -U",P'i'
288$ ELSE
570bb66e
JH
289$ tmp = P'i' + "=""undef"""
290$ 'tmp
291$ DELETE/SYMBOL tmp
97abc6ad
HM
292$ ENDIF
293$ ENDIF
97abc6ad
HM
294$ gotopt = "t"
295$ ENDIF
296$ IF (F$EXTRACT(0,1,P'i') .EQS. "V")
297$ THEN
298$ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE")
299$ echo "''me' generated by an unknown version of EDT."
300$ STOP
570bb66e 301$ EXIT
97abc6ad
HM
302$ ENDIF
303$ IF .NOT.gotopt
304$ THEN
305$ echo "''me': unknown option ",P'i'
306$ error = "true"
307$ ENDIF
308$ IF (F$LENGTH(P'i').GT.0).AND.(gotshortopt) THEN i = i - 1 !clustered switch
309$ i = i + 1
310$ IF (i .LT. (bang + 1)) THEN GOTO Opt_loop
311$!
312$ ENDIF ! (P1 .NES. "")
08c7cbbb 313$ config_args = F$EDIT(config_args,"TRIM")
97abc6ad
HM
314$!
315$ IF (error)
316$ THEN
317$ me = F$PARSE(me,,,"DIRECTORY")+ F$PARSE(me,,,"NAME")
c886fb20
CB
318$ echo "Usage: @''me' [-dehmrEKOSV] [-fconfig.sh] [-Dsymbol] [-Dsymbol=value]"
319$ echo " [-Usymbol] [-Usymbol=]"
97abc6ad
HM
320$ TYPE SYS$INPUT
321 "-d" : use defaults for all answers.
322 "-e" : go on without questioning past the production of config.sh. *
323 "-f" : specify an alternate default configuration file.
324 "-h" : print this help message and exit (with an error status).
c886fb20 325 "-m" : skip the MANIFEST check to see that all files are present
97abc6ad
HM
326 "-r" : reuse C symbols value if possible (skips costly nm extraction).*
327 "-s" : silent mode, only echoes questions and essential information.
328 -"D" : define symbol to have some value: *
329 -"Dsymbol" symbol gets the value 'define'
330 -"Dsymbol=value" symbol gets the value 'value'
331 -E : stop at the end of questions, after having produced config.sh. *
332 -K : do not use unless you know what you are doing.
333 -O : let -D and -U override definitions from loaded configuration file. *
334 -S : perform variable substitutions on all .SH files (can mix with -f) *
335 -"U" : undefine symbol: *
336 -"Usymbol" symbol gets the value 'undef'
337 -"Usymbol=" symbol gets completely empty
338 -V : print version number and exit (with a zero status).
339$ echo "%Config-I-VMS, lower case switches must be enclosed"
340$ echo "-Config-I-VMS, in double quotation marks, e.g.:"
341$ echo "-Config-I-VMS, @Configure ""-des"""
342$ echo "-Config-I-VMS, * indicates switch may not be fully implemented for VMS."
343$ SET DEFAULT 'vms_default_directory_name' !be kind rewind
344$ STOP
345$ EXIT 3 ! $STATUS = "%X00000003" (informational)
346$ ENDIF
347$!
348$ GOTO Check_silence
349$!
350$Shut_up:
01792a70
CB
351$ IF F$Mode() .eqs. "BATCH"
352$ THEN
353$ STDOUT = F$GetQuI("DISPLAY_JOB","LOG_SPECIFICATION",,"THIS_JOB")
354$ WRITE SYS$OUTPUT "Warning: Executing in batch mode. To avoid file locking conflicts,"
355$ WRITE SYS$OUTPUT "output intended for SYS$OUTPUT will be sent to a new version"
356$ WRITE SYS$OUTPUT STDOUT
357$ ELSE
358$ STDOUT = F$TRNLNM("SYS$OUTPUT")
359$ ENDIF
97abc6ad
HM
360$ DEFINE SYS$OUTPUT "_NLA0:"
361$ echo4 = "write STDOUT "
362$ cat4 = "TYPE/OUTPUT=''STDOUT'"
01792a70 363$ open/write/share=read STDOUT 'STDOUT'
97abc6ad
HM
364$ RETURN
365$!
366$Check_silence:
367$ IF (silent)
368$ THEN
369$ GOSUB Shut_up
370$ ELSE
371$ echo4 = "write SYS$OUTPUT "
372$ cat4 = "TYPE"
373$ ENDIF
374$!
375$!: run the defines and the undefines, if any, but leave the file out there...
376$! Unfortunately Configure.COM in DCL is not yet set up to do this -
377$! maybe someday
378$!
379$!: set package name
380$ package = "perl5"
f53b4005 381$ packageup = F$EDIT((package - "5"),"UPCASE")
97abc6ad
HM
382$!
383$!: Eunice requires " " instead of "", can you believe it
384$ echo ""
385$!: Here we go...
386$ echo "Beginning of configuration questions for ''package'."
387$ echo ""
388$!
389$!: Some greps do not return status, grrr.
390$ contains = "SEARCH"
391$!
392$!: first determine how to suppress newline on echo command !cant DCL is record oriented
393$! echo "Checking ''echo' to see how to suppress newlines..."
394$! echo "giving up..."
395$! echo "The star should be here-->*"
396$!
397$!: Now test for existence of everything in MANIFEST
398$ echo ""
399$ echo4 "First let's make sure your kit is complete. Checking..."
400$ manifestfound = ""
401$ miss_list = ""
a5fddd44 402$! Here I assume we are in the [foo.PERLxxx...] tree
97abc6ad
HM
403$! because the search routine simply does set def [-] if necessary.
404$ file_2_find = "MANIFEST" !I hope this one is not in [foo.PERL5xxx.VMS...]
405$Research_manifest:
406$ manifestfound = F$SEARCH(file_2_find)
407$ IF (manifestfound .EQS. "")
408$ THEN
409$ IF F$PARSE(F$ENVIRONMENT("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
410$ THEN
411$ SET DEFAULT [-]
412$ GOTO Research_manifest
413$ ELSE
414$ echo ""
415$ echo "There is no MANIFEST file. I hope your kit is complete !"
416$ miss_list = ""
417$ GOTO Beyond_manifest
418$ ENDIF
419$ ELSE
420$! MANIFEST. has been found and we have set def'ed there -
421$! time to bail out before it's too late.
e6df7ed1 422$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
a3ef2c6f 423$ IF (tmp .GES. "7.2") .AND. (F$GETSYI("HW_MODEL") .GE. 1024) THEN GOTO Beyond_depth_check
97abc6ad
HM
424$ IF (F$ELEMENT(max_allowed_dir_depth,".",F$ENVIRONMENT("Default")).nes.".")
425$ THEN
426$ TYPE SYS$INPUT:
427%Config-E-VMS, ERROR:
428 Sorry! It apears as though your perl build sub-directory is already too
429 deep into the VMS file system. Please try moving stuff into a shallower
430 directory (or altering the "max_allowed_dir_depth" parameter).
431$ echo4 "ABORTING..."
432$ SET DEFAULT 'vms_default_directory_name' !be kind rewind
433$ STOP
434$ EXIT !2 !$STATUS = "%X00000002" (error)
435$ ENDIF
e6df7ed1 436$Beyond_depth_check:
97abc6ad
HM
437$!
438$! after finding MANIFEST let's create (but not yet enter) the UU subdirectory
439$!
440$ IF (manifestfound .NES. "")
441$ THEN
442$ IF ( F$SEARCH("UU.DIR").EQS."" )
443$ THEN
444$ CREATE/DIRECTORY [.UU]
445$ ELSE
446$ IF ( F$SEARCH("[.UU]*.*").NES."" ) THEN DELETE/NOLOG [.UU]*.*;*
447$ ENDIF
448$!: Configure runs within the UU subdirectory
449$ SET DEFAULT [.UU]
450$!
451$! a little redundancy never hurt anybody?
452$ file_2_find = "[-]" + file_2_find
453$ manifestfound = F$SEARCH(file_2_find)
454$!
455$ OPEN/WRITE MISSING MISSING.
456$!change to "FALSE" if you wish to skip the manifest search
457$!(which after all is rather slow in DCL :-)
c886fb20 458$ IF (maniskip)
97abc6ad 459$ THEN
c886fb20
CB
460$ echo "Skipping MANIFEST check as requested"
461$ ELSE
462$!
97abc6ad
HM
463$ OPEN/READ CONFIG 'manifestfound'
464$Read_loop_manifest:
465$ READ/END_OF_FILE = Done_manifest CONFIG line
466$! This algorithm turns "foo/bar/baz.c" into "[.foo.bar]baz.c"
467$! pvhp@lns62.lns.cornell.edu 10-JUN-1996 20:31:46
468$! 2-MAR-1998 15:46:11 Improved to turn "foo/bar/baz.c.buz"
469$! into "[.foo.bar]baz.c_buz as happens with vmstar and unzip
470$ line = F$EDIT(line,"TRIM, COMPRESS")
471$ file_2_find = F$EXTRACT(0,F$LOCATE(" ",line),line)
472$ IF F$LOCATE("/",file_2_find) .NE. F$LENGTH(file_2_find)
473$ THEN
474$Re_strip_line_manifest:
475$ loca = F$LOCATE("/",file_2_find)
476$ ante = F$EXTRACT(0,loca,file_2_find)
477$ post = F$EXTRACT(loca,F$LENGTH(file_2_find),file_2_find)
478$ test_this = ante + "." + (post - "/")
479$ IF F$LOCATE("/",test_this) .NE. F$LENGTH(test_this)
480$ THEN
481$ file_2_find = ante + "." + (post - "/")
482$ GOTO Re_strip_line_manifest
483$ ELSE
484$ file_2_find = ante + "]" + (post - "/")
485$ ENDIF
486$ file_2_find = "[-."+file_2_find
487$ ELSE
488$ file_2_find = "[-]" + file_2_find
489$ ENDIF
490$!
491$ dirname = F$EXTRACT(0,F$LOCATE("]",file_2_find),file_2_find) + "]"
492$ file_2_find = file_2_find - dirname
493$ dots = 0
494$Dot_loop:
495$ dot_ele = F$ELEMENT(dots,".",file_2_find)
496$ IF dot_ele .EQS. "." THEN GOTO Eo_dot_loop
497$ IF dots .eq. 0
498$ THEN basename = f$extract(0,f$locate(".",file_2_find),file_2_find) + "."
499$ ELSE basename = basename + dot_ele + "_"
500$ ENDIF
501$ dots = dots + 1
502$ GOTO dot_loop
503$Eo_dot_loop:
504$ IF (((f$length(file_2_find)+1) .eq. f$length(basename)) .and. -
505 (f$extract(f$length(basename)-1,1,basename) .eqs. "_")) THEN -
506 basename = f$extract(0,f$length(basename)-1,basename)
507$ file_2_find = dirname + basename
508$!
509$ found = F$SEARCH(file_2_find)
146174a9
CB
510$ IF (found .EQS. "" .AND. dots .GT. 2)
511$ THEN
512$! 17-DEC-1999 Improved to turn "[.foo.bar]baz.c_buz" into
513$! "[.foo.bar]baz_c.buz" to cover unzipped archives and put
514$! "[.foo.bar]baz.c_buz,baz_c.buz" into missing list if neither is found.
515$ basename[f$locate(".",basename),1] := _
516$ dot_ele = F$ELEMENT(dots - 1,"_",basename)
517$ basename = -
518 f$extract(0,f$length(basename)-(f$length(dot_ele)+1),basename) -
519 + "." + dot_ele
520$ found = F$SEARCH(dirname + basename)
521$ file_2_find = file_2_find + "," + basename
522$ ENDIF
97abc6ad
HM
523$ IF (found .EQS. "")
524$ THEN
525$ WRITE MISSING file_2_find
526$ IF ((F$LENGTH(miss_list)+F$LENGTH(file_2_find)).LT.250)
527$ THEN
528$ miss_list = miss_list + "," + file_2_find
529$ ENDIF
530$ ENDIF
531$ GOTO Read_loop_manifest
532$Done_manifest:
533$ CLOSE CONFIG
534$ ENDIF !"TRUE"
535$ CLOSE MISSING
536$ ENDIF ! (manifestfound .NES. "")
537$Beyond_manifest:
538$ IF (miss_list .NES. "")
539$ THEN
540$ echo "Some of the files not found include:"
541$ cat4 MISSING.
542$ ENDIF
543$ IF ((miss_list .NES. "").OR.(manifestfound .EQS. ""))
544$ THEN
545$ TYPE SYS$INPUT:
546
547THIS PACKAGE SEEMS TO BE INCOMPLETE.
548
549You have the option of continuing the configuration process, despite the
550distinct possibility that your kit is damaged, by typing 'y'es. If you
551do, don't blame me if something goes wrong. I advise you to type 'n'o
498336ed 552and contact the author (dan@sidhe.org)
97abc6ad
HM
553
554$ READ SYS$COMMAND/PROMPT="Continue? [n] " ans
555$ IF ans
556$ THEN
557$ echo4 "Continuing..."
558$ ELSE
559$ echo4 "ABORTING..."
560$ GOTO Clean_up
561$ ENDIF
562$ ELSE
563$ echo4 "Looks good..."
564$ DELETE/NOLOG MISSING.;
565$ ENDIF ! (miss_list .NES. "")
566$ ENDIF ! (manifestfound .EQS. "") ELSE
567$!
568$! after finding MANIFEST (see above)
569$!: Configure runs within the UU subdirectory
570$!
571$!: compute the number of columns on the terminal for proper question formatting
572$! (sfn, will assume 80-ish)
573$!
574$!: set up the echo used in my read !sfn
575$!: now set up to do reads with possible shell escape and default assignment !sfn
576$ GOTO Beyond_myread
577$!
578$myread:
579$ ans = ""
580$ If (fastread)
581$ Then
582$ echo4 "''rp'"
583$ Else
a5fddd44
PP
584$ If (.NOT. silent) Then echo ""
585$ READ SYS$COMMAND/PROMPT="''rp'" ans
586$ IF (ans .EQS. "&-d")
587$ THEN
588$ echo4 "(OK, I will run with -d after this question.)"
589$ IF (.NOT. silent) THEN echo ""
97abc6ad 590$ READ SYS$COMMAND/PROMPT="''rp'" ans
a5fddd44
PP
591$ fastread := yes
592$ ENDIF
593$ IF (ans .EQS. "&-s")
594$ THEN
595$ echo4 "(OK, I will run with -s after this question.)"
97abc6ad
HM
596$ echo ""
597$ READ SYS$COMMAND/PROMPT="''rp'" ans
a5fddd44
PP
598$ silent := true
599$ GOSUB Shut_up
600$ ENDIF
97abc6ad
HM
601$ Endif
602$ RETURN
603$!
604$Beyond_myread:
605$!
606$!: create .config dir to save info across Configure sessions
607$ IF ( F$SEARCH("[-]CONFIG.DIR").EQS."" )
608$ THEN
609$ CREATE/DIRECTORY [-.CONFIG]
610$ OPEN/WRITE CONFIG [-.CONFIG]README.
611$ WRITE CONFIG -
612 "This directory created by Configure to save information that should"
613$ WRITE CONFIG -
614 "persist across sessions."
615$ WRITE CONFIG ""
616$ WRITE CONFIG -
617 "You may safely delete it if you wish."
618$ CLOSE CONFIG
619$ ENDIF
620$!
56aeb0ae
PP
621$ IF F$TYPE(usedevel) .EQS. "" THEN usedevel := n
622$ patchlevel_h = F$SEARCH("[-]patchlevel.h")
623$ IF (patchlevel_h.NES."")
624$ THEN
625$ SEARCH 'patchlevel_h "define","PERL_VERSION","epoch"/match=and/out=[]ver.out
59a27e12 626$ IF .NOT. usedevel .AND. usedevel .NES. "define"
56aeb0ae
PP
627$ THEN
628$ OPEN/READ CONFIG []ver.out
629$ READ CONFIG line
630$ CLOSE CONFIG
631$ tmp = F$EDIT(line,"TRIM,COMPRESS")
632$ xpatchlevel = F$INTEGER(F$ELEMENT(2," ",tmp))
633$ line = xpatchlevel / 2
634$ tmp = xpatchlevel - ( line * 2 )
635$ IF tmp .NE. 0
636$ THEN
637$ echo4 "patchlevel is " + F$STRING(xpatchlevel)
638$ cat4 SYS$INPUT:
639*** WHOA THERE!!! ***
640
641 This is an UNSTABLE DEVELOPMENT release.
642 (The patchlevel, is odd--as opposed to even,
643 and that signifies a development release. If you want a
644 maintenance release, you want an even-numbered release.)
645
646 Do ***NOT*** install this into production use.
647 Data corruption and crashes are possible.
648
649 It is most seriously suggested that you do not continue any further
650 unless you want to help in developing and debugging Perl.
651
652$ dflt="n"
653$ rp="Do you really want to continue? [''dflt'] "
654$ IF (fastread) THEN fastread := FALSE
655$ GOSUB myread
656$ IF ans .EQS. "" THEN ans = dflt
657$ IF ans
658$ THEN
659$ echo4 "Okay, continuing."
660$ ELSE
661$ echo4 "Okay, bye."
662$ DELETE/NOLOG/NOCONFIRM []ver.out;
663$ GOTO Clean_up
664$ STOP
665$ exit 0
666$ ENDIF
667$ ENDIF
668$ DELETE/SYMBOL line
669$ DELETE/SYMBOL tmp
670$ ENDIF
671$ DELETE/NOLOG/NOCONFIRM []ver.out;
672$ ENDIF
97abc6ad
HM
673$!: general instructions
674$ needman = "true"
675$ firsttime = "true"
676$ user = F$EDIT(F$GETJPI("","USERNAME"),"TRIM,COLLAPSE")
677$ IF .NOT.(F$SEARCH("[-.CONFIG]INSTRUCT.").EQS."")
678$ THEN
679$ messages = F$ENVIRONMENT("MESSAGE")
a3ef2c6f 680$ SET MESSAGE/NOFAC/NOSEV/NOIDENT/NOTEXT
97abc6ad
HM
681$ contains /NOOUTPUT [-.CONFIG]INSTRUCT. 'user'
682$ IF .NOT.($status.EQ.%X08D78053)
683$ THEN
684$ firsttime=""
685$ dflt = "n"
686$ rp = "Would you like to see the instructions? [''dflt'] "
687$ GOSUB myread
688$ if .NOT.ans THEN needman=""
689$ ENDIF
a3ef2c6f 690$ SET MESSAGE 'messages'
97abc6ad
HM
691$ ENDIF
692$ if (fastread.AND.silent.AND.(alldone.eqs."cont")) THEN needman=""
693$!
694$ IF (needman)
695$ THEN
696$ TYPE SYS$INPUT:
697
698This installation shell script will examine your system and ask you questions
699to determine how the perl5 package should be installed. If you get
700stuck on a question, you may use a ^C or ^Y shell escape to STOP this
701process, edit something, then restart this process as you just did.
702Many of the questions will have default answers in square
703brackets; typing carriage return will give you the default.
704
705$ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans
706$ TYPE SYS$INPUT:
707
a3ef2c6f 708In a hurry? You may run '@Configure "-d"'. This will bypass nearly all
97abc6ad 709the questions and use the computed defaults (or the previous answers provided
a3ef2c6f 710there was already a config.sh file). Type '@Configure "-h"' for a list of
97abc6ad
HM
711options.
712
713$ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans
714$ TYPE SYS$INPUT:
715
716Much effort has been expended to ensure that this shell script will
717run on any VMS system. If despite that it blows up on yours, your
718best bet is to edit Configure.com and @ it again. Whatever problems
498336ed 719you have with Configure.com, let me (dan@sidhe.org) know how I blew
97abc6ad
HM
720it.
721
722$!This installation script affects things in two ways:
723$!
724$!1) it may do direct variable substitutions on some of the files included
725$! in this kit.
726$!2) it builds a config.h file for inclusion in C programs. You may edit
727$! any of these files as the need arises after running this script.
728$!
729$!If you make a mistake on a question, there is no easy way to back up to it
730$!currently.
731$!
732$ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans
733$ IF (F$SEARCH("[-.CONFIG]INSTRUCT.").EQS."")
734$ THEN
735$ OPEN/WRITE CONFIG [-.CONFIG]INSTRUCT.
736$ WRITE CONFIG user
737$ CLOSE CONFIG
738$ ENDIF
739$ ENDIF !(needman .EQS. "true")
740$!
741$!: see if sh knows # comments !sfn
742$ sharpbang = "$ "
743$!: figure out how to guarantee sh startup !sfn
744$!: find out where common programs are !sfn
745$!loclist="awk/cat/comm/cp/echo/expr/find/grep/ln/ls/mkdir/rm/sed/sort/touch/tr/uniq"
746$!trylist="Mcc/byacc/cpp/csh/date/egrep/less/line/more/nroff/perl/pg/sendmail/test/uname"
747$! echo "I don't know where '$file' is, and my life depends on it."
748$! echo "Go find a public domain implementation or fix your PATH setting!"
749$! echo ""
750$! echo "Don't worry if any of the following aren't found..."
751$!: determine whether symbolic links are supported !sfn
752$!: see whether [:lower:] and [:upper:] are supported character classes !sfn
753$!: set up the translation script tr, must be called with ./tr of course !sfn
754$!
755$!: Try to determine whether config.sh was made on this system
756$!: Get old answers from old config file if Configure was run on the
757$!: same system, otherwise use the hints.
758$ config_sh_es = "''config_sh'/[-]config.sh/[-.vms]config.vms/"
759$ i = 0
760$ max = 3
761$Config_sh_look:
762$ config_sh = F$ELEMENT(i,"/",config_sh_es)
763$ i = i + 1
764$ IF (config_sh.NES."/").AND.(config_sh.NES."")
765$ THEN
766$ configshfound = F$SEARCH(config_sh)
767$ IF (configshfound.NES."") THEN GOTO Config_sh_found
768$ ENDIF
769$ IF (i.LT.max) THEN GOTO Config_sh_look
570bb66e 770$! genconfig.pl has "osname='VMS'"
56aeb0ae 771$ osname = F$EDIT(F$GETSYI("NODE_SWTYPE"),"COLLAPSE")
570bb66e
JH
772$ IF (configshfound.EQS."")
773$ THEN
774$ config_sh = "[-]config.sh" ! the fallback default
775$ GOTO Beyond_config_sh
776$ ENDIF
97abc6ad 777$Config_sh_found:
56aeb0ae 778$ IF F$TYPE(osname) .EQS. "" THEN osname = F$EDIT(F$GETSYI("NODE_SWTYPE"),"COLLAPSE")
570bb66e
JH
779$ IF F$TYPE(config_dflt) .EQS. "" THEN config_dflt = "n"
780$ rp = "Shall I @ ''config_sh' for default answers? [''config_dflt'] "
781$ GOSUB myread
56aeb0ae 782$ IF ans .EQS. "" THEN ans = config_dflt
570bb66e
JH
783$ IF ans
784$ THEN
785$ echo ""
786$ echo "Fetching default answers from ''config_sh'..."
787$!
788$! This @ is why config_sh must employ DCL syntax. Note that for
789$! symbols to be returned to this procedure they must be global.
790$! Which implies that assignments must be of the :== or == variety.
791$! Note further that the [-]config.sh file written by this procedure
792$! employs shell syntax. In order to convert shell syntax to DCL
793$! you might try:
794$!
795$! perl -ni -e "s/^#/!#/;s/='/==""/;s/'$/""/;print ""\$ $_"";" config.sh
796$!
797$! However, watch out for sig_nam, sig_nam_init, sig_num, startperl
798$! and any of the lower case double quoted variables such as the *format
799$! variables in such a config."sh".
800$!
801$ @'config_sh
802$!
803$ ENDIF
804$ DELETE/SYMBOL config_dflt
805$!
97abc6ad
HM
806$!we actually do not have "hints/" for VMS
807$! TYPE SYS$INPUT:
808$!
809$!First time through, eh? I have some defaults handy for the following systems:
810$!
811$! echo " ","VMS_VAX"
812$! echo " ","VMS_AXP"
813$! : Now look for a hint file osname_osvers, unless one has been
814$! : specified already.
815$! TYPE SYS$INPUT:
816$!
817$!You may give one or more space-separated answers, or "none" if appropriate.
818$!If your OS version has no hints, DO NOT give a wrong version -- say "none".
819$!
820$! READ SYS$COMMAND/PROMPT="Which of these apply, if any? " ans
821$!
822$Beyond_config_sh:
823$!
824$!: Restore computed paths !sfn
825$!
97abc6ad
HM
826$! %Config-I-VMS, a necessary error trap (could be PC running VCL)
827$!
828$ IF (osname .NES. "VMS")
829$ THEN
830$ echo4 "Hmm.. I wonder what ''osname' is (?)"
831$ TYPE SYS$INPUT:
832
833%Config-E-VMS, ERROR:
834
835 Err, you do not appear to be running VMS!
146174a9 836 This procedure is intended to Configure the building of Perl for VMS.
97abc6ad
HM
837
838$ READ SYS$COMMAND/PROMPT="Continue anyway? [n] " ans
839$ IF ans
840$ THEN
841$ echo4 "Continuing..."
842$ ELSE
843$ echo4 "ABORTING..."
844$ SET DEFAULT 'vms_default_directory_name' !be kind rewind
845$ STOP
846$ EXIT 2 !$STATUS = "%X00000002" (error)
847$ ENDIF
848$ ELSE !we are on VMS huzzah!
849$ IF .NOT.silent
850$ THEN TYPE SYS$INPUT:
851
852Configure uses the operating system name and version to set some defaults.
853The default value is probably right if the name rings a bell. Otherwise,
854since spelling matters for me, either accept the default or answer "none"
855to leave it blank.
856$ ENDIF
857$ rp = "Operating system name? [''osname'] "
858$ GOSUB myread
859$ IF ans.nes.""
860$ THEN
861$ IF (ans.NES.osname) !.AND.knowitall
862$ THEN
863$ echo4 "I'll go with ''osname' anyway..."
864$ ENDIF
865$ ENDIF
866$ ENDIF !(osname .NES./.EQS. "VMS")
867$!
868$!: who configured the system
97abc6ad 869$ cf_by = F$EDIT(user,"LOWERCASE")
08c7cbbb 870$ osvers = F$EDIT(F$GETSYI("VERSION"),"TRIM")
97abc6ad
HM
871$!
872$! Peter Prymmer has seen:
873$! "SYS$TIMEZONE_DIFFERENTIAL" = "-46800" (sic)
874$! "SYS$TIME_ZONE" = "EDT"
875$!
876$! Charles Lane recommended:
877$! "SYS$TIMEZONE_DIFFERENTIAL" = "-14400"
878$! "NEWS_TIMEZONE" = "-0500"
879$! "ST_TIMEZONE" = "EDT"
880$! "JAN_TIME_ZONE" = "EST "
881$! "MULTINET_TIMEZONE" = "EST"
882$! "DAYLIGHT_SAVINGS" = "1"
883$!
884$! Charles Bailey recommends (in ANU NEWS Doc Jan 1995):
885$! "PMDF_Timezone"
886$! "Multinet_Timezone"
887$! "TCPware_Timezone"
888$! "WIN$Time_Zone"
889$!
890$! This snippet o' DCL returns a string in default Unix `date` format,
891$! and it will prompt to set SYS$TIMEZONE_DIFFERENTIAL.
97abc6ad
HM
892$!
893$ MIN_TZO = -840 !units are minutes here
894$ MAX_TZO = 840
895$!
896$ wkday = F$EXTRACT(0,3,F$CVTIME(,,"WEEKDAY"))
897$ monn = F$CVTIME(,,"MONTH")
898$ mday = F$EXTRACT(8,2,F$CVTIME(,,"DATE"))
899$ hour = F$CVTIME(,,"HOUR")
900$ min = F$CVTIME(,,"MINUTE")
901$ sec = F$CVTIME(,,"SECOND")
902$ year = F$CVTIME(,,"YEAR")
903$!
904$ months = "/Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/Dec/"
905$ i = 0
906$Mon_loop:
907$ i = i + 1
908$ mon = F$ELEMENT(i,"/",months)
909$ IF i.LT.monn THEN GOTO Mon_loop
910$!
911$ tzneedset = "t"
912$ systz = F$TRNLNM("SYS$TIMEZONE_DIFFERENTIAL")
913$ IF systz.NES.""
914$ THEN
915$ tzhour = F$INTEGER(systz)/3600
916$ tzmins = F$INTEGER(systz)/60
917$ tzminrem = tzmins - tzhour*60
918$ IF tzminrem.lt.0 THEN tzminrem = -1*tzminrem !keeps !2ZL happy
919$ IF tzhour.ge.0
920$ THEN signothetime = "+"
921$ IF tzhour.EQ.0.AND.tzminrem.EQ.0
922$ THEN direction = "on GMT/"
923$ ELSE direction = "east of "
924$ ENDIF
925$ ELSE signothetime = "-"
926$ tzhour = -1*tzhour !keeps !UL happy
927$ direction = "west of "
928$ ENDIF
929$ echo ""
97abc6ad
HM
930$ echo "According to the setting of your ""SYS$TIMEZONE_DIFFERENTIAL"" (= ''systz')"
931$ IF tzminrem.ne.0
932$ THEN
933$ tzspan = "''tzhour' hours & ''tzminrem' minutes"
934$ ELSE
935$ tzspan = "''tzhour' hours"
936$ ENDIF
937$ dflt = "y"
938$ echo "Your system is ''tzspan' ''direction'UTC in England."
570bb66e 939$ rp = "(''systz') Is this UTC Time Zone Offset correct? [''dflt'] "
97abc6ad
HM
940$ GOSUB myread
941$ IF ans.OR.(ans.EQS."")
942$ THEN
943$ tzneedset = "f"
944$ tzd = systz
945$ GOTO Beyond_TimeZone
946$ ENDIF
947$ ELSE
948$ echo ""
97abc6ad
HM
949$ echo4 """SYS$TIMEZONE_DIFFERENTIAL"" does not appear to be DEFINEd on your system"
950$ ENDIF
951$!
952$TZSet:
953$ echo ""
954$ echo "Please tell me in hh:mm form what time offset from GMT/UTC in England"
146174a9 955$ echo "you are. As an example Eastern (US) Standard Time is -5:00 offset, but"
97abc6ad
HM
956$ echo "Eastern Daylight Time (summer) is -4:00 offset."
957$ dflt = "0:00"
958$ rp = "Enter the Time Zone offset: [''dflt'] "
959$ GOSUB myread
960$ ans = F$Edit(ans,"collapse,trim,uncomment,upcase")
961$ IF ans.EQS."" THEN ans = dflt
962$ tzhour = F$ELEMENT(0,":","''ans'") !first
963$ IF tzhour.EQS."" THEN tzhour = 0
964$ tzhour = F$INTEGER(tzhour)
965$ tzminrem = F$ELEMENT(1,":","''ans'") !second
966$ IF tzminrem.NES.""
967$ THEN
968$ tzminrem = F$INTEGER(tzminrem)
969$ IF F$EXTRACT(0,1,"''ans'") .EQS. "-" THEN tzminrem = tzminrem * -1
970$ ELSE
971$ tzminrem = 0
972$ ENDIF
973$ tzmins = tzhour*60 + tzminrem
974$ tzd = F$STRING(tzmins*60)
975$ IF tzhour .GE. 0
976$ THEN
977$ signothetime = "+"
978$ ELSE
979$ tzhour = -1*tzhour !keeps !UL happy
980$ signothetime = "-"
981$ ENDIF
982$ IF (tzmins.GT.MAX_TZO).OR.(tzmins.LT.MIN_TZO)
983$ THEN
984$ echo ""
985$ echo "%Config-W-VMS-TIMERANGE, Response must be in the range -14:00 to 14:00."
986$ goto TZSet
987$ ENDIF
988$!
989$Beyond_TimeZone:
990$ tz = f$fao("UTC!AS!UL:!2ZL",signothetime,tzhour,tzminrem)
991$ cf_time = "''wkday' ''mon' ''mday' ''hour':''min':''sec' ''tz' ''year'"
992$!
993$!: determine the architecture name
994$! genconfig.pl has either archname='VMS_AXP' or 'VMS_VAX'
570bb66e
JH
995$! Note that DCL in VMS V5.4 does not have F$GETSYI("ARCH_NAME")
996$! but does have F$GETSYI("HW_MODEL").
97abc6ad
HM
997$!
998$ IF (F$GETSYI("HW_MODEL") .LT. 1024)
999$ THEN
1000$ archname = "VMS_VAX"
146174a9 1001$ otherarch = "an Alpha"
08c7cbbb
GS
1002$ alignbytes="8"
1003$ arch_type = "ARCH-TYPE=__VAX__"
97abc6ad
HM
1004$ ELSE
1005$ archname = "VMS_AXP"
146174a9 1006$ otherarch = "a VAX"
08c7cbbb
GS
1007$ alignbytes="8"
1008$ arch_type = "ARCH-TYPE=__AXP__"
97abc6ad
HM
1009$ ENDIF
1010$ rp = "What is your architecture name? [''archname'] "
1011$ GOSUB myread
1012$ IF ans.NES.""
1013$ THEN
1014$ ans = F$EDIT(ans,"COLLAPSE, UPCASE")
1015$ IF (ans.NES.archname) !.AND.knowitall
1016$ THEN
1017$ echo4 "I'll go with ''archname' anyway..."
1018$ ENDIF
1019$ ENDIF
146174a9 1020$ dflt = "n"
570bb66e
JH
1021$ vms_prefix = "perl_root"
1022$ vms_prefixup = F$EDIT(vms_prefix,"UPCASE")
1023$ rp = "Will you be sharing your ''vms_prefixup' with ''otherarch'? [''dflt'] "
146174a9
CB
1024$ GOSUB myread
1025$ if ans.NES.""
97abc6ad 1026$ THEN
146174a9
CB
1027$ ans = F$EXTRACT(0,1,F$EDIT(ans,"COLLAPSE, UPCASE"))
1028$ ENDIF
1029$ IF (ans.NES."Y")
1030$ THEN
1031$ sharedperl = "N"
1032$ ELSE
1033$ sharedperl = "Y"
1034$ IF (archname.EQS."VMS_AXP")
97abc6ad 1035$ THEN
97abc6ad
HM
1036$ macros = macros + """AXE=1"","
1037$ ENDIF
97abc6ad
HM
1038$ ENDIF
1039$!
1040$!: is AFS running? !sfn
1041$!: decide how portable to be. Allow command line overrides. !sfn
1042$!: set up shell script to do ~ expansion !sfn
1043$!: expand filename !sfn
1044$!: now set up to get a file name !sfn
1045$!
570bb66e
JH
1046$ IF F$TYPE(prefix) .EQS. ""
1047$ THEN
1048$ prefix = F$ENVIRONMENT("DEFAULT") - ".UU]" + "]"
1049$ prefix = F$PARSE(prefix,,,,"NO_CONCEAL") - "][" - ".;"
1050$ prefixbase = prefix - "]"
1051$ prefix = prefixbase + ".]"
1052$ ENDIF
1053$ src = prefix
f53b4005
CB
1054$!: determine root of directory hierarchy where package will be installed.
1055$ dflt = prefix
1056$ IF .NOT.silent
1057$ THEN
1058$ echo ""
1059$ echo "By default, ''package' will be installed in ''dflt', pod"
570bb66e 1060$ echo "pages under ''prefixbase'.LIB.POD], etc..., i.e. with ''dflt' as prefix for"
f53b4005 1061$ echo "all installation directories."
570bb66e 1062$ echo "On ''osname' the prefix is used to DEFINE the ''vms_prefixup' prior to installation"
f53b4005
CB
1063$ echo "as well as during subsequent use of ''package' via ''packageup'_SETUP.COM."
1064$ ENDIF
570bb66e 1065$ rp = "Installation prefix to use (for ''vms_prefixup')? [ ''dflt' ] "
f53b4005
CB
1066$ GOSUB myread
1067$ IF ans.NES.""
1068$ THEN
1069$ prefix = ans
1070$ IF F$LOCATE(".]",ans) .EQ. F$LENGTH(ans) THEN prefix = prefix - "]" + ".]"
1071$ ELSE
1072$ prefix = dflt
1073$ ENDIF
570bb66e 1074$ perl_root = prefix
f53b4005
CB
1075$!
1076$! Check here for pre-existing PERL_ROOT.
1077$! -> ask if removal desired.
1078$! Check here for writability of requested PERL_ROOT if it is not the default (cwd).
1079$! -> recommend letting PERL_ROOT be PERL_SRC if requested PERL_ROOT is not writable.
1080$!
97abc6ad
HM
1081$ vms_skip_install = "true"
1082$ dflt = "y"
1083$! echo ""
570bb66e 1084$ rp = "Skip the remaining """"where install"""" questions? [''dflt'] "
97abc6ad
HM
1085$ GOSUB myread
1086$ IF (.NOT.ans).AND.(ans.NES."") THEN vms_skip_install = "false"
97abc6ad
HM
1087$ IF (.NOT.vms_skip_install)
1088$ THEN
97abc6ad
HM
1089$!
1090$!: set the prefixit variable, to compute a suitable default value
1091$!
1092$!: determine where private library files go
1093$!: Usual default is /usr/local/lib/perl5. Also allow things like
1094$!: /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
1095$ IF .NOT.silent
1096$ THEN TYPE SYS$INPUT:
1097
1098There are some auxiliary files for perl5 that need to be put into a
1099private library directory that is accessible by everyone.
1100$ ENDIF
570bb66e
JH
1101$ IF F$TYPE(privlib) .NES. ""
1102$ THEN dflt = privlib
1103$ ELSE dflt = "''vms_prefix':[lib]"
1104$ ENDIF
97abc6ad
HM
1105$ rp = "Pathname where the private library files will reside? "
1106$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1107$ GOSUB myread
1108$ IF ans.NES.""
1109$ THEN privlib = ans
1110$ ELSE privlib = dflt
1111$ ENDIF
1112$!
f53b4005 1113$ ENDIF !%Config-I-VMS, skip remaining "where install" questions
97abc6ad 1114$!
86fced14
CB
1115$ perl_symbol = "true"
1116$ perl_verb = ""
1117$ dflt = "y"
1118$ IF .NOT.silent
1119$ THEN
1120$ echo ""
570bb66e
JH
1121$ echo "You may choose to write ''packageup'_SETUP.COM to assign a foreign"
1122$ echo "symbol to invoke ''package', which is the usual method."
1123$ echO "If you do not do so then you would need a DCL command verb at the"
1124$ echo "process or the system wide level."
86fced14 1125$ ENDIF
570bb66e 1126$ rp = "Invoke perl as a global symbol foreign command? [''dflt'] "
86fced14
CB
1127$ GOSUB myread
1128$ IF (.NOT.ans).AND.(ans.NES."") THEN perl_symbol = "false"
1129$!
1130$ IF (.NOT.perl_symbol)
1131$ THEN
1132$ dflt = "y"
1133$ IF .NOT.silent
1134$ THEN
1135$ echo ""
570bb66e
JH
1136$ echo "Since you won't be using a symbol you must choose to put the ''packageup'"
1137$ echo "verb in a per-process table or in the system wide DCLTABLES (which"
1138$ echo "would require write privilege)."
86fced14 1139$ ENDIF
570bb66e 1140$ rp = "Invoke perl as a per process command verb? [ ''dflt' ] "
86fced14
CB
1141$ GOSUB myread
1142$ IF (.NOT.ans).AND.(ans.NES."")
1143$ THEN perl_verb = "DCLTABLES"
1144$ ELSE perl_verb = "PROCESS"
1145$ ENDIF
1146$ ENDIF ! (.NOT.perl_symbol)
1147$!
97abc6ad 1148$!: set the base revision
08c7cbbb
GS
1149$ baserev="5.0"
1150$ revision = baserev - ".0"
97abc6ad
HM
1151$!: get the patchlevel
1152$ echo ""
570bb66e 1153$ echo4 "Getting the current patchlevel..."
97abc6ad
HM
1154$ patchlevel_h = F$SEARCH("[-]patchlevel.h")
1155$ IF (patchlevel_h.NES."")
1156$ THEN
1157$ got_patch = "false"
1158$ got_sub = "false"
08c7cbbb
GS
1159$ got_api_revision = "false"
1160$ got_api_version = "false"
1161$ got_api_subversion = "false"
97abc6ad
HM
1162$ OPEN/READONLY CONFIG 'patchlevel_h'
1163$Patchlevel_h_loop:
570bb66e 1164$ READ/END_Of_File=Close_patch/ERROR=Close_patch CONFIG line
cceca5ed 1165$ IF ((F$LOCATE("#define PERL_VERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_patch))
97abc6ad
HM
1166$ THEN
1167$ line = F$EDIT(line,"COMPRESS, TRIM")
cc391245 1168$ patchlevel = F$ELEMENT(2," ",line)
97abc6ad
HM
1169$ got_patch = "true"
1170$ ENDIF
cceca5ed 1171$ IF ((F$LOCATE("#define PERL_SUBVERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_sub))
97abc6ad
HM
1172$ THEN
1173$ line = F$EDIT(line,"COMPRESS, TRIM")
cc391245 1174$ subversion = F$ELEMENT(2," ",line)
97abc6ad
HM
1175$ got_sub = "true"
1176$ ENDIF
08c7cbbb
GS
1177$ IF ((F$LOCATE("#define PERL_API_REVISION",line).NE.F$LENGTH(line)).AND.(.NOT.got_api_revision))
1178$ THEN
1179$ line = F$EDIT(line,"COMPRESS, TRIM")
1180$ api_revision = F$ELEMENT(2," ",line)
1181$ got_api_revision = "true"
1182$ ENDIF
1183$ IF ((F$LOCATE("#define PERL_API_VERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_api_version))
1184$ THEN
1185$ line = F$EDIT(line,"COMPRESS, TRIM")
1186$ api_version = F$ELEMENT(2," ",line)
1187$ got_api_version = "true"
1188$ ENDIF
1189$ IF ((F$LOCATE("#define PERL_API_SUBVERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_api_subversion))
1190$ THEN
1191$ line = F$EDIT(line,"COMPRESS, TRIM")
1192$ api_subversion = F$ELEMENT(2," ",line)
1193$ got_api_subversion = "true"
1194$ ENDIF
97abc6ad
HM
1195$ IF (.NOT.got_patch).OR.(.NOT.got_sub) THEN GOTO Patchlevel_h_loop
1196$Close_patch:
1197$ CLOSE CONFIG
570bb66e
JH
1198$ ELSE
1199$ patchlevel="0"
1200$ subversion="0"
97abc6ad 1201$ ENDIF
08c7cbbb 1202$ IF (F$STRING(subversion) .NES. "0")
97abc6ad 1203$ THEN
08c7cbbb
GS
1204$ echo "(You have ''package' revision ''revision' patchlevel ''patchlevel' subversion ''subversion'.)"
1205$ ELSE
1206$ echo "(You have ''package' revision ''revision' patchlevel ''patchlevel'.)"
97abc6ad
HM
1207$ ENDIF
1208$!
08c7cbbb 1209$ version = revision + "_" + patchlevel + "_" + subversion
97abc6ad
HM
1210$!
1211$ IF (.NOT.vms_skip_install)
1212$ THEN
97abc6ad
HM
1213$!: set the prefixup variable, to restore leading tilde escape !sfn
1214$!
1215$!: determine where public architecture dependent libraries go
1216$ IF (.NOT.silent)
1217$ THEN
1218$ echo ""
1219$ echo "''package' contains architecture-dependent library files. If you are"
1220$ ENDIF
1221$ IF (.NOT.silent)
1222$ THEN TYPE SYS$INPUT:
1223sharing libraries in a heterogeneous environment, you might store
1224these files in a separate location. Otherwise, you can just include
1225them with the rest of the public library files.
1226$ ENDIF
570bb66e
JH
1227$ IF F$TYPE(archlib) .NES. ""
1228$ THEN dflt = archlib
1229$ ELSE dflt = privlib - "]" + "." + archname + "." + version + "]"
1230$ ENDIF
97abc6ad
HM
1231$ rp = "Where do you want to put the public architecture-dependent libraries? "
1232$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1233$ GOSUB myread
1234$ IF ans.NES.""
1235$ THEN archlib = ans
1236$ ELSE archlib = dflt
1237$ ENDIF
1238$!
97abc6ad 1239$ ENDIF !%Config-I-VMS, skip "where install" questions
570bb66e 1240$!
97abc6ad 1241$! This quotation from Configure has to be included on VMS:
570bb66e 1242$!
97abc6ad
HM
1243$ TYPE SYS$INPUT:
1244
1245There is, however, a strange, musty smell in the air that reminds me of
1246something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
1247$ CONTINUE
1248$ IF (.NOT.vms_skip_install)
1249$ THEN
1250$!: it so happens the Eunice I know will not run shell scripts in Unix format
1251$!
1252$!: see if setuid scripts can be secure !sfn
1253$!: now see if they want to do setuid emulation !sfn
1254$!
1255$!: determine where site specific libraries go.
1256$ IF .NOT.silent
1257$ THEN TYPE SYS$INPUT:
1258
1259The installation process will also create a directory for
1260site-specific extensions and modules. Some users find it convenient
1261to place all local files in this directory rather than in the main
1262distribution directory.
1263$ ENDIF
570bb66e
JH
1264$ IF F$TYPE(sitelib) .NES. ""
1265$ THEN dflt = sitelib
1266$ ELSE dflt = privlib - "]" + ".SITE_PERL]"
1267$ ENDIF
97abc6ad
HM
1268$ rp = "Pathname for the site-specific library files? "
1269$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1270$ GOSUB myread
1271$ IF ans.NES.""
1272$ THEN sitelib = ans
1273$ ELSE sitelib = dflt
1274$ ENDIF
1275$!
1276$!: determine where site specific architecture-dependent libraries go.
1277$ IF .NOT.silent
1278$ THEN TYPE SYS$INPUT:
1279
1280The installation process will also create a directory for
1281architecture-dependent site-specific extensions and modules.
1282$ ENDIF
570bb66e
JH
1283$ IF F$TYPE(sitearch) .NES. ""
1284$ THEN dflt = sitearch
1285$ ELSE dflt = sitelib - "]" + "." + archname + "]"
1286$ ENDIF
97abc6ad
HM
1287$ rp = "Pathname for the site-specific architecture-dependent library files? "
1288$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1289$ GOSUB myread
1290$ IF ans.NES.""
1291$ THEN sitearch = ans
1292$ ELSE sitearch = dflt
1293$ ENDIF
1294$!
1295$!: determine where old public architecture dependent libraries might be
1296$!
1297$!: determine where public executables go
570bb66e
JH
1298$ IF F$TYPE(bin) .NES. ""
1299$ THEN dflt = bin
1300$! ELSE dflt = prefix - ".]" + ".BIN]"
1301$ ELSE dflt = "/''vms_prefix'/000000"
1302$ ENDIF
97abc6ad
HM
1303$ rp = "Pathname where the public executables will reside? "
1304$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1305$ GOSUB myread
1306$ IF ans.NES.""
1307$ THEN bin = ans
1308$ ELSE bin = dflt
1309$ ENDIF
1310$!
1311$!: determine where manual pages are on this system
1312$!: What suffix to use on installed man pages
1313$!: see if we can have long filenames
1314$!: determine where library module manual pages go
1315$!: What suffix to use on installed man pages
1316$!: see what memory models we can support
1317$!
570bb66e
JH
1318$ ELSE ! skipping "where install" questions, we must set some symbols
1319$ IF F$TYPE(archlib).EQS."" THEN -
1320 archlib="''vms_prefix':[lib.''archname'.''version']"
1321$ IF F$TYPE(bin) .EQS. "" THEN -
1322 bin="/''vms_prefix'/000000"
1323$ IF F$TYPE(privlib) .EQS. "" THEN -
1324 privlib ="''vms_prefix':[lib]"
1325$ IF F$TYPE(sitearch) .EQS. "" THEN -
1326 sitearch="''vms_prefix':[lib.site_perl.''archname']"
1327$ IF F$TYPE(sitelib) .EQS. "" THEN -
1328 sitelib ="''vms_prefix':[lib.site_perl]"
97abc6ad
HM
1329$ ENDIF !%Config-I-VMS, skip "where install" questions
1330$!
570bb66e
JH
1331$! These derived locations can be set whether we've opted to
1332$! skip the where install questions or not.
1333$!
1334$ IF F$TYPE(archlibexp) .EQS. "" THEN -
1335 archlibexp="''vms_prefix':[lib.''archname'.''version']"
1336$ IF F$TYPE(binexp) .EQS. "" THEN -
1337 binexp ="''vms_prefix':[000000]"
1338$ IF F$TYPE(builddir) .EQS. "" THEN -
1339 builddir ="''vms_prefix':[000000]"
1340$ IF F$TYPE(installarchlib) .EQS. "" THEN -
1341 installarchlib="''vms_prefix':[lib.''archname'.''version']"
1342$ IF F$TYPE(installbin) .EQS. "" THEN -
1343 installbin ="''vms_prefix':[000000]"
1344$ IF F$TYPE(installscript) .EQS. "" THEN -
1345 installscript ="''vms_prefix':[utils]"
1346$ IF F$TYPE(installman1dir) .EQS. "" THEN -
1347 installman1dir ="''vms_prefix':[man.man1]"
1348$ IF F$TYPE(installman3dir) .EQS. "" THEN -
1349 installman3dir ="''vms_prefix':[man.man3]"
1350$ IF F$TYPE(installprivlib) .EQS. "" THEN -
1351 installprivlib ="''vms_prefix':[lib]"
1352$ IF F$TYPE(installsitearch) .EQS. "" THEN -
1353 installsitearch="''vms_prefix':[lib.site_perl.''archname']"
1354$ IF F$TYPE(installsitelib) .EQS. "" THEN -
1355 installsitelib ="''vms_prefix':[lib.site_perl]"
1356$ IF F$TYPE(oldarchlib) .EQS. "" THEN -
1357 oldarchlib="''vms_prefix':[lib.''archname']"
1358$ IF F$TYPE(oldarchlibexp) .EQS. "" THEN -
1359 oldarchlibexp="''vms_prefix':[lib.''archname']"
1360$ IF F$TYPE(privlibexp) .EQS. "" THEN -
1361 privlibexp ="''vms_prefix':[lib]"
1362$ IF F$TYPE(sitearchexp) .EQS. "" THEN -
1363 sitearchexp ="''vms_prefix':[lib.site_perl.''archname']"
1364$ IF F$TYPE(sitelib_stem) .EQS. "" THEN -
1365 sitelib_stem ="''vms_prefix':[lib.site_perl]"
1366$ IF F$TYPE(sitelibexp) .EQS. "" THEN -
1367 sitelibexp ="''vms_prefix':[lib.site_perl]"
1368$!
97abc6ad 1369$!: see if we need a special compiler
01792a70 1370$! cc_list = "cc/decc|gcc" !%Config-I-VMS, compiler symbols/commands
97abc6ad
HM
1371$!
1372$ nocc = "f"
1373$ vms_cc_dflt = ""
1374$ vms_cc_available = ""
1375$!
1376$ OPEN/WRITE CONFIG ccvms.c
570bb66e 1377$ WRITE CONFIG "#ifdef __DECC"
97abc6ad 1378$ WRITE CONFIG "#include <stdlib.h>" !DECC is sooo picky
570bb66e 1379$ WRITE CONFIG "#endif"
97abc6ad
HM
1380$ WRITE CONFIG "#include <stdio.h>"
1381$ WRITE CONFIG "int main() {"
1382$ WRITE CONFIG "#ifdef __DECC"
1383$ WRITE CONFIG " printf(""/DECC\n"");"
1384$ WRITE CONFIG "#else"
1385$ WRITE CONFIG " printf(""/VAXC\n"");"
1386$ WRITE CONFIG "#endif"
1387$ WRITE CONFIG " exit(0);"
1388$ WRITE CONFIG "}"
1389$ CLOSE CONFIG
1390$!
5af06f0d
DS
1391$! DEFINE SYS$ERROR _NLA0:
1392$! DEFINE SYS$OUTPUT _NLA0:
97abc6ad
HM
1393$ cc/NoObj/list=ccvms.lis ccvms.c
1394$ tmp = $status
5af06f0d
DS
1395$! DEASSIGN SYS$OUTPUT
1396$! DEASSIGN SYS$ERROR
97abc6ad 1397$ IF (silent) THEN GOSUB Shut_up
97abc6ad
HM
1398$ IF tmp.NE.%X10B90001
1399$ THEN
1400$ IF tmp.NE.%X10000001
1401$ THEN
1402$ nocc = "t" !%X10000001 is return from gcc
1403$ GOTO Gcc_initial_check
1404$ ENDIF
1405$ ENDIF
1406$!
1407$ GOSUB List_Parse
1408$ IF .NOT.silent THEN echo ""
570bb66e 1409$ echo "Default ""cc"" is ''line' ''archsufx' ''F$GETSYI("VERSION")'"
97abc6ad
HM
1410$ IF F$LOCATE("VAX",line).NE.F$LENGTH(line)
1411$ THEN
97abc6ad
HM
1412$ IF .NOT.silent
1413$ THEN
570bb66e 1414$ echo "Will try cc/decc..."
97abc6ad 1415$ ENDIF
570bb66e
JH
1416$ DEFINE/USER_MODE SYS$ERROR NL:
1417$ DEFINE/USER_MODE SYS$OUTPUT NL:
97abc6ad
HM
1418$ SET NOON
1419$ cc/decc/NoObj/list=ccvms.lis ccvms.c
1420$ tmp = $status
97abc6ad
HM
1421$ SET ON
1422$ IF (silent) THEN GOSUB Shut_up
1423$ IF tmp.NE.%X10B90001
1424$ THEN
570bb66e 1425$ echo "Apparently you don't have that one."
97abc6ad
HM
1426$ ELSE
1427$ GOSUB List_parse
570bb66e 1428$ echo "You also have: ''line' ''archsufx' ''F$GETSYI("VERSION")'"
97abc6ad
HM
1429$ vms_cc_available = vms_cc_available + "cc/decc "
1430$ ENDIF
1431$ ELSE
5af06f0d 1432$ IF (F$LOCATE("DEC",line).NE.F$LENGTH(line)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line))
97abc6ad
HM
1433$ THEN
1434$ vms_cc_dflt = "/decc"
1435$ vms_cc_available = vms_cc_available + "cc/decc "
97abc6ad
HM
1436$ ENDIF
1437$ ENDIF
1438$!
1439$Gcc_initial_check:
570bb66e 1440$ echo "Checking for gcc"
97abc6ad 1441$ OPEN/WRITE CONFIG gccvers.lis
570bb66e
JH
1442$ DEFINE/USER_MODE SYS$ERROR CONFIG
1443$ DEFINE/USER_MODE SYS$OUTPUT CONFIG
97abc6ad
HM
1444$ 'gcc_symbol'/noobj/version _nla0:
1445$ tmp = $status
97abc6ad
HM
1446$ IF (silent) THEN GOSUB Shut_up
1447$ CLOSE CONFIG
1448$ IF (tmp.NE.%X10000001).and.(tmp.ne.%X00030001)
1449$ THEN
570bb66e
JH
1450$ echo "Symbol ""''gcc_symbol'"" is not defined. I guess you don't have it."
1451$ DELETE/NOLOG/NOCONFIRM gccvers.lis;
1452$ GOTO Cxx_initial_check
97abc6ad
HM
1453$ ENDIF
1454$ OPEN/READ CONFIG gccvers.lis
1455$GCC_List_Read:
1456$ READ/END_OF_FILE=GCC_List_End CONFIG line
1457$ GOTO GCC_List_Read
1458$GCC_List_End:
1459$ CLOSE CONFIG
1460$ echo line
1461$ vms_cc_available = vms_cc_available + "''gcc_symbol' "
1462$ DELETE/NOLOG/NOCONFIRM gccvers.lis;
1463$!
570bb66e
JH
1464$Cxx_initial_check:
1465$!
1466$! Do note that [vms]perl source files have a ways to go before they will
1467$! compile under CXX.
1468$! In order to test Configure.com with CXX swap the '!' comment character
1469$! between the following two lines.
1470$!
1471$! IF 1 .eq. 1
1472$ IF 1 .eq. 0
1473$!
1474$ THEN
1475$!
1476$ echo "Checking for CXX..."
1477$ OPEN/WRITE CONFIG ccvms.c
1478$ WRITE CONFIG "#include <iostream>"
1479$ WRITE CONFIG "int main() {"
1480$ WRITE CONFIG "#ifdef __DECCXX"
1481$ WRITE CONFIG " cout << __DECCXX, endl;"
1482$ WRITE CONFIG "#else"
1483$ WRITE CONFIG " cout << 0,endl;"
1484$ WRITE CONFIG "#endif"
1485$! Todo: add G++ identifier check ??
1486$ WRITE CONFIG " return(0);"
1487$ WRITE CONFIG "}"
1488$ CLOSE CONFIG
1489$ SET NOON
1490$ DEFINE/USER_MODE SYS$OUTPUT NL:
1491$ DEFINE/USER_MODE SYS$ERROR NL:
1492$ cxx ccvms.c
1493$ tmp = $status
1494$ SET ON
1495$! success $status with:
1496$! DEC C++ V1.1-001 on VMS VAX V5.5-2
1497$! DEC C++ V5.6-013 on OpenVMS VAX V7.1
1498$! DEC C++ V6.1-003 on OpenVMS Alpha V7.1
1499$! Compaq C++ V6.2-016 for OpenVMS Alpha V7.2-1
1500$ IF tmp .eq. %X15F60001
1501$ THEN
1502$! Which linker?
1503$ SET NOON
1504$ DEFINE/USER_MODE SYS$OUTPUT NL:
1505$ DEFINE/USER_MODE SYS$ERROR NL:
1506$ link ccvms.obj
1507$ tmp = $status
1508$ SET ON
1509$ ! success $status with:
1510$ ! link && DEC C++ V1.1-001 on VMS VAX V5.5-2
1511$ ! link && DEC C++ V5.6-013 on OpenVMS VAX V7.1
1512$ IF tmp .eq. %X10000001
1513$ THEN
1514$ ld_try = "Link"
1515$ vms_cc_available = vms_cc_available + "cxx "
1516$ echo "CXX and LINK are available."
1517$ ELSE
1518$ IF F$SEARCH("ccvms.exe") .NES. "" THEN DELETE/NOLOG/NOCONFIRM ccvms.exe;
1519$ SET NOON
1520$ DEFINE/USER_MODE SYS$OUTPUT NL:
1521$ DEFINE/USER_MODE SYS$ERROR NL:
1522$ cxxlink ccvms.obj
1523$ tmp = $status
1524$ SET ON
1525$ ! success $status with:
1526$ ! cxxlink && DEC C++ V6.1-003 on OpenVMS Alpha V7.1
1527$ ! cxxlink && Compaq C++ V6.2-016 for OpenVMS Alpha V7.2-1
1528$ IF tmp .eq. %X10000001
1529$ THEN
1530$ ld_try = "cxxlink"
1531$ vms_cc_available = vms_cc_available + "cxx "
1532$ echo "CXX and CXXLINK are available."
1533$ ENDIF
1534$ ENDIF
1535$ IF F$SEARCH("ccvms.exe") .NES. "" THEN DELETE/NOLOG/NOCONFIRM ccvms.exe;
1536$ ELSE
1537$ echo "Nope."
1538$ ENDIF
1539$ DELETE/NOLOG/NOCONFIRM ccvms.c;
1540$ IF F$SEARCH("ccvms.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM ccvms.obj;
1541$ CALL Cxx_demangler_cleanup
1542$!
1543$ ENDIF ! 1 .eq. 0 or 1 .eq. 1
1544$!
97abc6ad
HM
1545$CC_Cleanup:
1546$ DELETE/NOLOG/NOCONFIRM ccvms.*;
1547$CC_Desired:
1548$!: see if we need a special compiler
1549$! echo ""
570bb66e 1550$ echo "Available compiler(s):"
97abc6ad
HM
1551$ echo "( ''vms_cc_available')"
1552$ IF .NOT.nocc
1553$ THEN
1554$ dflt = "cc''vms_cc_dflt'" !-> "cc" in case first compile went OK
1555$ ELSE
1556$ dflt = gcc_symbol
1557$ ENDIF
1558$ rp = "Use which C compiler? [''dflt'] "
1559$ GOSUB myread
1560$ IF ans.NES.""
1561$ THEN
1562$ ans = F$EDIT(ans,"TRIM, COMPRESS, LOWERCASE")
1563$ Mcc = ans
5af06f0d 1564$ IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans))
97abc6ad
HM
1565$ THEN
1566$ Mcc = "cc/decc"
570bb66e 1567$ Using_Dec_C := Y
429a5e67 1568$ C_COMPILER_Replace = "CC=cc=''Mcc'"
97abc6ad 1569$ ENDIF
570bb66e
JH
1570$ IF F$LOCATE("cxx",F$EDIT(ans,"COLLAPSE,LOWERCASE")) .NE. F$LENGTH(ans)
1571$ THEN
1572$ Mcc = "cxx"
1573$ using_cxx := Y
1574$ ld = ld_try
1575$! C_COMPILER_Replace = "CC=cc=''Mcc'"
1576$ ENDIF
97abc6ad
HM
1577$ IF Mcc.NES.dflt
1578$ THEN
570bb66e
JH
1579$ IF F$LOCATE("dec",dflt) .NE. F$LENGTH(dflt) .or. -
1580 F$LOCATE("compaq",dflt) .NE. F$LENGTH(dflt)
97abc6ad
HM
1581$ THEN
1582$ C_COMPILER_Replace = "CC=cc=''Mcc'"
1583$ ELSE
570bb66e 1584$ Using_Dec_C := Y
97abc6ad
HM
1585$ ENDIF
1586$ ELSE
1587$ IF Mcc .EQS. "cc/decc"
1588$ THEN
570bb66e 1589$ Using_Dec_C := Y
429a5e67 1590$ C_COMPILER_Replace = "CC=cc=''Mcc'"
97abc6ad
HM
1591$ ENDIF
1592$ ENDIF
1593$ ELSE
1594$ Mcc = dflt
1595$ IF Mcc .EQS. "cc/decc"
1596$ THEN
570bb66e 1597$ Using_Dec_C := Y
429a5e67 1598$ C_COMPILER_Replace = "CC=cc=''Mcc'"
97abc6ad 1599$ ENDIF
97abc6ad
HM
1600$ IF Mcc .EQS. "gcc"
1601$ THEN
570bb66e 1602$ Using_Gnu_C := Y
429a5e67 1603$ C_COMPILER_Replace = "CC=cc=''Mcc'"
97abc6ad
HM
1604$ ENDIF
1605$ ENDIF
1606$Decc_Version_check:
570bb66e
JH
1607$ ccversion=""
1608$ IF Using_Dec_C
97abc6ad
HM
1609$ THEN
1610$ echo ""
570bb66e 1611$ echo4 "Checking for Dec C's version number..."
97abc6ad
HM
1612$ OPEN/WRITE CONFIG deccvers.c
1613$ WRITE CONFIG "#include <stdlib.h>" !DECC is sooo picky
1614$ WRITE CONFIG "#include <stdio.h>"
1615$ WRITE CONFIG "int main() {"
1616$ WRITE CONFIG "#ifdef __DECC"
1617$ WRITE CONFIG "#ifdef __DECC_VER"
1618$ WRITE CONFIG " printf(""%i\n"", __DECC_VER);"
1619$ WRITE CONFIG "#else"
1620$ WRITE CONFIG " printf(""%i\n"", ""1"");"
1621$ WRITE CONFIG "#endif"
1622$ WRITE CONFIG "#endif"
1623$ WRITE CONFIG " exit(0);"
1624$ WRITE CONFIG "}"
1625$ CLOSE CONFIG
570bb66e
JH
1626$ SET NOON
1627$ DEFINE/USER_MODE SYS$ERROR NL:
1628$ DEFINE/USER_MODE SYS$OUTPUT NL:
97abc6ad
HM
1629$ 'Mcc' deccvers.c
1630$ tmp = $status
97abc6ad 1631$ IF (silent) THEN GOSUB Shut_up
570bb66e
JH
1632$ DEFINE/USER_MODE SYS$ERROR NL:
1633$ DEFINE/USER_MODE SYS$OUTPUT NL:
97abc6ad
HM
1634$ link deccvers.obj
1635$ tmp = $status
97abc6ad
HM
1636$ IF (silent) THEN GOSUB Shut_up
1637$ OPEN/WRITE CONFIG deccvers.out
570bb66e
JH
1638$ DEFINE/USER_MODE SYS$ERROR CONFIG
1639$ DEFINE/USER_MODE SYS$OUTPUT CONFIG
97abc6ad
HM
1640$ mcr []deccvers.exe
1641$ tmp = $status
570bb66e 1642$ SET ON
97abc6ad 1643$ CLOSE CONFIG
97abc6ad
HM
1644$ IF (silent) THEN GOSUB Shut_up
1645$ OPEN/READ CONFIG deccvers.out
1646$ READ/END_OF_FILE=Dec_c_cleanup CONFIG line
1647$Dec_c_cleanup:
1648$ CLOSE CONFIG
97abc6ad 1649$ echo "You are using Dec C ''line'"
570bb66e
JH
1650$ ccversion = line
1651$ Dec_C_Version = F$INTEGER(line)
1652$ IF Dec_C_Version .GE. 60200000
1653$ THEN
1654$ echo4 "adding /NOANSI_ALIAS qualifier to ccflags."
1655$ ccflags = ccflags + "/NOANSI_ALIAS"
1656$ ENDIF
1657$ DELETE/NOLOG/NOCONFIRM deccvers.*;
97abc6ad 1658$ ENDIF
97abc6ad 1659$Gcc_check:
570bb66e
JH
1660$ gccversion = ""
1661$ IF Using_Gnu_C
97abc6ad 1662$ THEN
570bb66e
JH
1663$ vaxcrtl_olb = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB")
1664$ vaxcrtl_exe = F$SEARCH("SYS$SHARE:VAXCRTL.EXE")
1665$ gcclib_olb = F$SEARCH("GNU_CC:[000000]GCCLIB.OLB")
1666$ IF gcclib_olb .EQS. ""
97abc6ad 1667$ THEN
570bb66e
JH
1668$! These objects/libs come w/ gcc 2.7.2 for AXP:
1669$ tmp = F$SEARCH("GNU_CC:[000000]libgcc2.olb")
1670$ IF tmp .NES. "" then gcclib_olb = tmp
1671$ tmp = F$SEARCH("GNU_CC:[000000]libgcclib.olb")
1672$ IF tmp .NES. ""
1673$ THEN
1674$ IF gcclib_olb .EQS. ""
1675$ THEN gcclib_olb = tmp
1676$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp
1677$ ENDIF
97abc6ad 1678$ ENDIF
570bb66e
JH
1679$ tmp = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB")
1680$ IF tmp .NES. ""
1681$ THEN
1682$ IF gcclib_olb .EQS. ""
1683$ THEN gcclib_olb = tmp
1684$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp
1685$ ENDIF
97abc6ad 1686$ ENDIF
570bb66e
JH
1687$ tmp = F$SEARCH("GNU_CC:[000000]crt0.obj")
1688$ IF tmp .NES. ""
1689$ THEN
1690$ IF gcclib_olb .EQS. ""
1691$ THEN gcclib_olb = tmp
1692$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp
1693$ ENDIF
97abc6ad 1694$ ENDIF
570bb66e
JH
1695$ IF gcclib_olb .EQS. vaxcrtl_olb THEN gcclib_olb = "" !goofy order of axplibs
1696$ ELSE
1697$ gcclib_olb = gcclib_olb + "/lib"
97abc6ad 1698$ ENDIF
570bb66e 1699$ IF gcclib_olb .NES. "" .AND. -
97abc6ad
HM
1700 (vaxcrtl_olb .NES. "" .OR. -
1701 vaxcrtl_exe .NES. "" )
570bb66e
JH
1702$ THEN
1703$ echo ""
1704$ echo4 "Checking for GNU cc in disguise and/or its version number..." !>&4
1705$ OPEN/WRITE CONFIG gccvers.c
1706$! WRITE CONFIG "#include <stdlib.h>" !DECC is sooo picky
1707$ WRITE CONFIG "#include <stdio.h>"
1708$ WRITE CONFIG "int main() {"
1709$ WRITE CONFIG "#ifdef __GNUC__"
1710$ WRITE CONFIG "#ifdef __VERSION__"
1711$ WRITE CONFIG " printf(""%s\n"", __VERSION__);"
1712$ WRITE CONFIG "#else"
1713$ WRITE CONFIG " printf(""%s\n"", ""1"");"
1714$ WRITE CONFIG "#endif"
1715$ WRITE CONFIG "#endif"
1716$ WRITE CONFIG " exit(0);"
1717$ WRITE CONFIG "}"
1718$ CLOSE CONFIG
1719$ DEFINE SYS$ERROR _NLA0:
1720$ DEFINE SYS$OUTPUT _NLA0:
1721$ 'Mcc' gccvers.c
1722$ tmp = $status
1723$ DEASSIGN SYS$ERROR _NLA0:
1724$ DEASSIGN SYS$OUTPUT _NLA0:
1725$ IF (silent) THEN GOSUB Shut_up
1726$ DEFINE SYS$ERROR _NLA0:
1727$ DEFINE SYS$OUTPUT _NLA0:
1728$ IF vaxcrtl_exe .EQS. ""
1729$ THEN
1730$ IF F$LOCATE("VAXCRTL",gcclib_olb).NE.F$LENGTH(gcclib_olb)
1731$ THEN
1732$ link gccvers.obj,'gcclib_olb',SYS$LIBRARY:VAXCRTL/Library
1733$ tmp = $status
1734$ ELSE
1735$ link gccvers.obj,'gcclib_olb'
1736$ tmp = $status
1737$ ENDIF
1738$ ELSE
1739$ OPEN/WRITE CONFIG GCCVERS.OPT
1740$ WRITE CONFIG "SYS$SHARE:VAXCRTL/SHARE"
1741$ CLOSE CONFIG
1742$ link gccvers.obj,GCCVERS.OPT/OPT,'gcclib_olb'
1743$ tmp = $status
1744$ ENDIF
1745$ DEASSIGN SYS$ERROR
1746$ DEASSIGN SYS$OUTPUT
1747$ IF (silent) THEN GOSUB Shut_up
1748$ OPEN/WRITE CONFIG gccvers.out
1749$ DEFINE SYS$ERROR CONFIG
1750$ DEFINE SYS$OUTPUT CONFIG
1751$ mcr []gccvers.exe
1752$ tmp = $status
1753$ CLOSE CONFIG
1754$ DEASSIGN SYS$OUTPUT
1755$ DEASSIGN SYS$ERROR
1756$ IF (silent) THEN GOSUB Shut_up
1757$ OPEN/READ CONFIG gccvers.out
1758$ READ/END_OF_FILE=Gcc_cleanup CONFIG line
1759$Gcc_cleanup:
1760$ CLOSE CONFIG
1761$ DELETE/NOLOG/NOCONFIRM gccvers.*;
1762$ IF F$LOCATE("GNU C version ",line).NE.F$LENGTH(line)
1763$ THEN
1764$ echo "You are not using GNU cc."
1765$ GOTO Host_name
1766$ ELSE
1767$ echo "You are using GNU cc ''line'"
1768$ gccversion = line
1769$ Using_Gnu_C := Y
1770$ C_COMPILER_Replace = "CC=cc=''Mcc'"
1771$ GOTO Include_dirs
1772$ ENDIF
1773$ ENDIF
1774$ ENDIF
1775$Cxx_Version_check:
1776$ IF using_cxx
97abc6ad 1777$ THEN
570bb66e 1778$ OPEN/WRITE CONFIG cxxvers.c
97abc6ad
HM
1779$ WRITE CONFIG "#include <stdio.h>"
1780$ WRITE CONFIG "int main() {"
570bb66e
JH
1781$ WRITE CONFIG "#ifdef __DECCXX_VER"
1782$ WRITE CONFIG " printf(""%i\n"", __DECCXX_VER);"
97abc6ad 1783$ WRITE CONFIG "#else"
570bb66e 1784$ WRITE CONFIG " printf(""%i\n"", ""0"");"
97abc6ad 1785$ WRITE CONFIG "#endif"
570bb66e 1786$ WRITE CONFIG " return(0);"
97abc6ad
HM
1787$ WRITE CONFIG "}"
1788$ CLOSE CONFIG
570bb66e
JH
1789$ SET NOON
1790$ DEFINE/USER_MODE SYS$ERROR NL:
1791$ DEFINE/USER_MODE SYS$OUTPUT NL:
1792$ 'Mcc' cxxvers.c
97abc6ad 1793$ tmp = $status
570bb66e 1794$ SET ON
97abc6ad 1795$ IF (silent) THEN GOSUB Shut_up
570bb66e
JH
1796$ SET NOON
1797$ DEFINE/USER_MODE SYS$ERROR NL:
1798$ DEFINE/USER_MODE SYS$OUTPUT NL:
1799$ 'ld' cxxvers.obj
1800$ tmp = $status
1801$ SET ON
97abc6ad 1802$ IF (silent) THEN GOSUB Shut_up
570bb66e
JH
1803$ OPEN/WRITE CONFIG cxxvers.out
1804$ SET NOON
1805$ DEFINE/USER_MODE SYS$ERROR CONFIG
1806$ DEFINE/USER_MODE SYS$OUTPUT CONFIG
1807$ mcr []cxxvers.exe
97abc6ad 1808$ tmp = $status
570bb66e 1809$ SET ON
97abc6ad 1810$ CLOSE CONFIG
97abc6ad 1811$ IF (silent) THEN GOSUB Shut_up
570bb66e
JH
1812$ OPEN/READ CONFIG cxxvers.out
1813$ READ/END_OF_FILE=Cxx_cleanup CONFIG line
1814$Cxx_cleanup:
97abc6ad 1815$ CLOSE CONFIG
570bb66e
JH
1816$ DELETE/NOLOG/NOCONFIRM cxxvers.*;
1817$ echo "You are using CXX ''line'"
1818$ cxxversion = line
1819$ ccversion = line
1820$ CALL Cxx_demangler_cleanup
1821$ ENDIF
1822$!
1823$Cxx_demangler_cleanup: SUBROUTINE
1824$!
1825$! If we do build with CXX these demangler Dbs will be left all over.
1826$! However, configure.com does try to remove the [.UU] sub directory.
1827$! Be sure to set default to the correct place before calling this sub.
1828$!
1829$ SET NOON
1830$ IF F$SEARCH("[.CXX_REPOSITORY]*.*") .NES. "" THEN DELETE/NOLOG/NOCONFIRM [.CXX_REPOSITORY]*.*;*
1831$ IF F$SEARCH("CXX_REPOSITORY.DIR") .NES. ""
1832$ THEN
1833$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) CXX_REPOSITORY.DIR
1834$ DELETE/NOLOG/NOCONFIRM CXX_REPOSITORY.DIR;
97abc6ad 1835$ ENDIF
570bb66e
JH
1836$ SET ON
1837$ EXIT
1838$ ENDSUBROUTINE ! Cxx_demangler_cleanup
1839$!
97abc6ad
HM
1840$ GOTO Host_name
1841$!
1842$List_Parse:
1843$ OPEN/READ CONFIG ccvms.lis
1844$ READ CONFIG line
1845$ IF (F$GETSYI("HW_MODEL") .LT. 1024)
1846$ THEN
1847$ read CONFIG line
1848$ archsufx = "VAX"
1849$ ELSE
1850$ archsufx = "AXP"
1851$ ENDIF
1852$ CLOSE CONFIG
1853$ line = F$EDIT(line,"TRIM,COMPRESS")
1854$ line = line - "Page 1" ! occurs at end all compilers
1855$ line = line - "CCVMS " ! filename appears w/ VAXC
1856$ line = line - "Source Listing " ! Seen w/ AXP DECC
1857$ tmp = F$EXTRACT(0,20,line) !timestamp, e.g. "30-JUL-1996 21:12:54 "
1858$ line = line - tmp
1859$ line = F$EDIT(line,"TRIM") !bit redundant but we're in no big hurry
1860$ DELETE/NOLOG/NOCONFIRM ccvms.lis;
1861$ RETURN
1862$!
1863$Include_dirs:
570bb66e 1864$!: What should the include directory be ? (.TLB text libraries)
97abc6ad
HM
1865$ dflt = gcclib_olb
1866$ rp = "Where are the include files you want to use? "
1867$ IF f$length( rp + "[''dflt'] " ).gt.76
1868$ THEN rp = F$FAO("!AS!/!AS",rp,"[''dflt'] ")
1869$ ELSE rp = rp + "[''dflt'] "
1870$ ENDIF
1871$ GOSUB myread
1872$ usrinc = ans
1873$!
1874$!: see if we have to deal with yellow pages, now NIS.
1875$!: now get the host name
1876$Host_name:
1877$ echo ""
1878$ echo4 "Figuring out host name..." !>&4
1879$ myhostname = ""
1880$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("ARPANET_HOST_NAME")
1881$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("INTERNET_HOST_NAME")
1882$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("MULTINET_HOST_NAME")
1883$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("UCX$INET_HOST_NAME")
1884$ IF myhostname.eqs."".and. -
1885 F$TRNLNM("UCX$INET_HOST") .nes. "" .and. -
1886 F$TRNLNM("UCX$INET_DOMAIN") .nes. "" THEN -
1887 myhostname = F$TRNLNM("UCX$INET_HOST") + "." + F$TRNLNM("UCX$INET_DOMAIN")
1888$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("TCPWARE_DOMAINNAME")
1889$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("NEWS_ADDRESS")
1890$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("SYS$NODE") - "::"
1891$ IF myhostname.eqs."" THEN myhostname = F$EDIT(F$GETSYI("SCSNODE"),"TRIM")
1892$!: you do not want to know about this
1893$!: verify guess
1894$ rp = "Your host name appears to be """"''myhostname'"""". Right? "
1895$ GOSUB myread
1896$ IF (.not.ans).and.(ans.NES."")
1897$ THEN
1898$ READ SYS$COMMAND/PROMPT= -
1899 "Please type the (one word) name of your host: " ans
1900$ myhostname = ans
1901$ ENDIF
1902$!: translate upper to lower if necessary
1903$ myhostname = F$EDIT(myhostname,"COLLAPSE")
1904$ mylowhostname = F$EDIT(myhostname," LOWERCASE")
1905$ IF mylowhostname.NES.myhostname
1906$ THEN
1907$ echo "(Normalizing case in your host name)"
1908$ myhostname = mylowhostname
1909$ ENDIF
1910$!
1911$ fp = F$LOCATE(".",myhostname)
1912$ mydomain = F$EXTRACT(fp,(F$LENGTH(myhostname)-fp)+1,myhostname)
1913$ IF mydomain.NES."" !no periods in DECnet names like "MYDECNODE::"
1914$ THEN
1915$ rp = "What is your domain name? [''mydomain'] "
1916$ GOSUB myread
cc391245 1917$ IF ans .nes. "" THEN mydomain = ans
97abc6ad
HM
1918$!: translate upper to lower if necessary
1919$ mydomain = F$EDIT(mydomain,"COLLAPSE")
1920$ mylowdomain = F$EDIT(mydomain," LOWERCASE")
1921$ IF mylowdomain.NES.mydomain
1922$ THEN
1923$ echo "(Normalizing case in your domain name)"
1924$ mydomain = mylowdomain
1925$ ENDIF
1926$ ENDIF
1927$ myhostname = myhostname - mydomain
1928$ echo "(Trimming domain name from host name--host name is now ''myhostname')"
1929$ IF .NOT.silent
1930$ THEN TYPE SYS$INPUT:
1931
1932I need to get your e-mail address in Internet format if possible, i.e.
1933something like user@host.domain. Please answer accurately since I have
1934no easy means to double check it. The default value provided below
1935is most probably close to the reality but may not be valid from outside
1936your organization...
1937$ ENDIF
146174a9 1938$ dflt = "''cf_by'@''myhostname'"+"''mydomain'"
97abc6ad
HM
1939$ rp = "What is your e-mail address? [''dflt'] "
1940$ GOSUB myread
cc391245 1941$ IF ans .nes. ""
97abc6ad
HM
1942$ THEN cf_email = ans
1943$ ELSE cf_email = dflt
1944$ ENDIF
1945$!
1946$ IF .NOT.silent
1947$ THEN TYPE SYS$INPUT:
1948
1949If you or somebody else will be maintaining perl at your site, please
1950fill in the correct e-mail address here so that they may be contacted
1951if necessary. Currently, the "perlbug" program included with perl
1952will send mail to this address in addition to perlbug@perl.com. You may
1953enter "none" for no administrator.
1954$ ENDIF
1955$ dflt = "''cf_email'"
1956$ rp = "Perl administrator e-mail address [''dflt'] "
1957$ GOSUB myread
cc391245 1958$ IF ans .nes. ""
97abc6ad
HM
1959$ THEN perladmin = ans
1960$ ELSE perladmin = dflt
1961$ ENDIF
1962$!
1963$!: determine where public executable scripts go
1964$!: determine perl absolute location
1965$!: figure out how to guarantee perl startup
1966$!
1967$!: see how we invoke the C preprocessor
1968$! echo ""
1969$! echo4 "Now, how can we feed standard input to your C preprocessor..." !>&4
1970$!: Set private lib path
1971$!: Now check and see which directories actually exist, avoiding duplicates
1972$!: determine optimize, if desired, or use for debug flag also
1973$!: We will not override a previous value, but we might want to
1974$!: augment a hint file
1975$!: the following weeds options from ccflags that are of no interest to cpp
1976$!: flags used in final linking phase
1977$!: Try to guess additional flags to pick up local libraries.
1978$!: coherency check
1979$! echo ""
1980$! echo4 "Checking your choice of C compiler and flags for coherency..." !>&4
1981$!: compute shared library extension
1982$!: Looking for optional libraries
1983$!: see if nm is to be used to determine whether a symbol is defined or not
1984$!: get list of predefined functions in a handy place
1985$!: see if we have sigaction
1986$!: see whether socketshr exists
1987$ IF (F$SEARCH(F$PARSE("SocketShr","Sys$Share:.Exe")).NES."")
1988$ THEN
570bb66e 1989$ Has_socketshr = "T"
97abc6ad
HM
1990$ echo ""
1991$ echo4 "Hmm... Looks like you have SOCKETSHR's Berkeley networking support."
570bb66e
JH
1992$ ELSE
1993$ Has_socketshr = "F"
1994$ ENDIF
1995$ IF (Dec_C_Version .GE. 50200000)
97abc6ad
HM
1996$ THEN
1997$ Has_Dec_C_Sockets = "T"
1998$ echo ""
1999$ echo4 "Hmm... Looks like you've got Dec C's Berkeley networking support."
570bb66e
JH
2000$ ELSE
2001$ Has_Dec_C_Sockets = "F"
97abc6ad
HM
2002$ ENDIF
2003$ ! Hey, we've got both. Default to Dec C, then, since it's better
570bb66e 2004$ IF Has_socketshr .OR. Has_Dec_C_Sockets
97abc6ad
HM
2005$ THEN
2006$ echo ""
2007$ echo "You've got sockets available. Which socket stack do you want to"
2008$ echo "build into perl?"
570bb66e 2009$ IF Has_Dec_C_Sockets
97abc6ad
HM
2010$ THEN
2011$ dflt = "DECC"
2012$ else
e6df7ed1 2013$ dflt = "SOCKETSHR"
97abc6ad
HM
2014$ endif
2015$ rp = "Choose socket stack (NONE"
570bb66e
JH
2016$ IF Has_socketshr THEN rp = rp + ",SOCKETSHR"
2017$ IF Has_Dec_C_Sockets THEN rp = rp + ",DECC"
97abc6ad
HM
2018$ rp = rp + ") [''dflt'] "
2019$ GOSUB myread
570bb66e
JH
2020$ IF ans .EQS. "" THEN ans = "''dflt'"
2021$ Has_Dec_C_Sockets = "F"
2022$ Has_socketshr = "F"
97abc6ad 2023$ ans = F$EDIT(ans,"TRIM,COMPRESS,LOWERCASE")
570bb66e
JH
2024$ IF ans.eqs."decc" then Has_Dec_C_Sockets = "T"
2025$ IF ans.eqs."socketshr" then Has_socketshr = "T"
2026$ ENDIF
97abc6ad
HM
2027$!
2028$!
3eeba6fb 2029$! Ask if they want to build with VMS_DEBUG perl
146174a9 2030$ echo ""
3eeba6fb
CB
2031$ echo "Perl can be built to run under the VMS debugger."
2032$ echo "You should only select this option if you are debugging"
2033$ echo "perl itself. This can be a useful feature if you are "
2034$ echo "embedding perl in a program."
146174a9 2035$ dflt = "n"
3eeba6fb
CB
2036$ rp = "Build a VMS-DEBUG version of Perl? [''dflt'] "
2037$ GOSUB myread
146174a9
CB
2038$ IF ans.eqs."" then ans = dflt
2039$ IF F$EXTRACT(0, 1, F$EDIT(ans,"COLLAPSE,UPCASE")) .eqs. "Y"
3eeba6fb
CB
2040$ THEN
2041$ use_vmsdebug_perl = "Y"
2042$ macros = macros + """__DEBUG__=1"","
2043$ ELSE
2044$ use_vmsdebug_perl = "N"
2045$ ENDIF
2046$!
8c99d73e
GS
2047$! Ask if they want to build with DEBUGGING
2048$ echo ""
2049$ echo "Perl can be built with extra runtime debugging enabled. This
2050$ echo "enables the -D switch, at the cost of some performance. It
2051$ echo "was mandatory on perl 5.005 and before on VMS, but is now
2052$ echo "optional. If you don't generally use it you should probably
2053$ echo "leave this off and gain a bit of extra speed.
2054$ dflt = "y"
2055$ rp = "Build a DEBUGGING version of Perl? [''dflt'] "
2056$ GOSUB myread
2057$ IF ans.eqs."" then ans = dflt
2058$ IF F$EXTRACT(0, 1, F$EDIT(ans,"COLLAPSE,UPCASE")) .eqs. "Y"
2059$ THEN
2060$ use_debugging_perl = "Y"
2061$ ELSE
2062$ use_debugging_perl = "N"
2063$ ENDIF
2064$!
3937c24e 2065$! Ask if they want to build with MULTIPLICITY
146174a9 2066$ echo ""
570bb66e
JH
2067$ echo "Perl can be built so that multiple Perl interpreters can coexist"
2068$ echo "within the same Perl executable."
2069$ echo "There is some performance overhead, however, so you
3937c24e 2070$ echo "probably don't want to choose this unless you're going to be doing
570bb66e 2071$ echo "things with embedded perl."
3937c24e 2072$ dflt = "n"
570bb66e 2073$ rp = "Build Perl for multiplicity? [''dflt'] "
3937c24e 2074$ GOSUB myread
570bb66e
JH
2075$ IF ans.eqs."" then ans = dflt
2076$ IF ans
3937c24e 2077$ THEN
570bb66e 2078$ usemultiplicity="define"
3937c24e 2079$ ELSE
570bb66e 2080$ usemultiplicity="undef"
3937c24e 2081$ ENDIF
fafa4fee
CB
2082$!
2083$! Ask if they want to build with 64-bit support
570bb66e 2084$ IF (archname.eqs."VMS_AXP").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
fafa4fee 2085$ THEN
f53b4005 2086$ dflt = use64bitint
fafa4fee 2087$ echo ""
f53b4005
CB
2088$ echo "You can have native 64-bit long integers.
2089$ echo ""
2090$ echo "Perl can be built to take advantage of 64-bit integer types
2091$ echo "on some systems, which provide a much larger range for perl's
2092$ echo "mathematical operations. (Note that does *not* enable 64-bit
2093$ echo "fileops at the moment, as Dec C doesn't do that yet)."
2094$ echo "Choosing this option will most probably introduce binary incompatibilities.
2095$ echo ""
2096$ echo "If this doesn't make any sense to you, just accept the default ''dflt'.
2097$ rp = "Try to use 64-bit integers, if available? [''dflt'] "
5e4ba136 2098$ GOSUB myread
f53b4005
CB
2099$ IF ans .EQS. "" THEN ans = dflt
2100$ IF (f$extract(0, 1, f$edit(ans,"COLLAPSE,UPCASE")) .EQS. "Y")
5e4ba136 2101$ THEN
f53b4005 2102$ use64bitint="Y"
5e4ba136 2103$ ELSE
f53b4005 2104$ use64bitint="N"
5e4ba136 2105$ ENDIF
f53b4005
CB
2106$ IF (use64bitint)
2107$ THEN
2108$ dflt = use64bitall
2109$ echo ""
2110$ echo "Since you chose 64-bitness you may want to try maximal 64-bitness.
2111$ echo "What you have chosen is minimal 64-bitness which means just enough
2112$ echo "to get 64-bit integers. The maximal means using as much 64-bitness
2113$ echo "as is possible on the platform. This in turn means even more binary
2114$ echo "incompatibilities. On the other hand, your platform may not have
2115$ echo "any more maximal 64-bitness than what you already have chosen.
2116$ echo ""
2117$ echo "If this doesn't make any sense to you, just accept the default ''dflt'.
2118$ rp = "Try to use full 64-bit support, if available? [''dflt'] "
2119$ GOSUB myread
2120$ IF ans .EQS. "" THEN ans = dflt
2121$ IF (f$extract(0, 1, f$edit(ans,"COLLAPSE,UPCASE")) .EQS. "Y")
2122$ THEN
2123$ use64bitall="Y"
2124$ ELSE
2125$ use64bitall="N"
2126$ ENDIF
2127$ ENDIF
2128$ ENDIF ! AXP && >= 7.1
146174a9 2129$!
97abc6ad 2130$! Ask about threads, if appropriate
570bb66e 2131$ if Using_Dec_C
97abc6ad 2132$ THEN
146174a9 2133$ echo ""
97abc6ad
HM
2134$ echo "This version of Perl can be built with threads. While really nifty,
2135$ echo "they are a beta feature, and there is a speed penalty for perl
2136$ echo "programs if you build with threads *even if you don't use them*
429a5e67 2137$ dflt = "n"
97abc6ad
HM
2138$ rp = "Build with threads? [''dflt'] "
2139$ GOSUB myread
2140$ if ans.eqs."" then ans = dflt
2141$ if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y")
2142$ THEN
2143$ use_threads="T"
498336ed
CB
2144$!
2145$ ! Shall we do the 5.005-stype threads, or IThreads?
2146$ echo "As of 5.5.640, Perl has two different internal threading
2147$ echo "implementations, the 5.005 version (5005threads) and an
2148$ echo "interpreter-based version (ithreads) that has one
2149$ echo "interpreter per thread. Both are very experimental. This
2150$ echo "arrangement exists to help developers work out which one
2151$ echo "is better.
2152$ echo "
2153$ echo "If you're a casual user, you probably don't want
2154$ echo "interpreter-threads at this time. There doesn't yet exist
2155$ echo "a way to create threads from within Perl in this model,
2974eb71 2156$ echo "i.e., ""use Thread;"" will NOT work.
498336ed
CB
2157$ echo "
2158$ dflt = "n"
2159$ rp = "Build with Interpreter threads? [''dflt']
2974eb71 2160$ GOSUB myread
498336ed
CB
2161$ if ans.eqs."" then ans = dflt
2162$ if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y")
2163$ THEN
2164$ use_ithreads="Y"
2165$ use_5005_threads="N"
2166$ ELSE
2167$ use_ithreads="N"
2168$ use_5005_threads="Y"
2169$ ENDIF
429a5e67 2170$ ! Are they on VMS 7.1 on an alpha?
570bb66e 2171$ if (archname.eqs."VMS_AXP").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
429a5e67
DS
2172$ THEN
2173$ echo ""
2174$ echo "Threaded perl can be linked to use multiple kernel threads
2175$ echo "and system upcalls on VMS 7.1+ on Alpha systems. This feature
2176$ echo "allows multiple threads to execute simultaneously on an SMP
2177$ echo "system as well as preventing a single thread from blocking
2178$ echo "all the threads in a program, even on a single-processor
2179$ echo "machine. Unfortunately this feature isn't safe on an
2180$ echo "unpatched 7.1 system. (Several OS patches were required when
2181$ echo "this procedure was written)
e6df7ed1 2182$ dflt = "n"
429a5e67
DS
2183$ rp = "Enable multiple kernel threads and upcalls? [''dflt'] "
2184$ gosub myread
2185$ if ans.eqs."" then ans="''dflt'"
2186$ if f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE")).eqs."Y"
2187$ THEN
2188$ Thread_Live_Dangerously = "MT=MT=1"
2189$ ENDIF
2190$ ENDIF
97abc6ad
HM
2191$ ENDIF
2192$ ENDIF
498336ed
CB
2193$ if archname .eqs. "VMS_AXP"
2194$ then
2195$!
2196$! Case sensitive?
2197$ echo ""
2198$ echo "By default, perl (and pretty much everything else on VMS) uses
2199$ echo "case-insensitive linker symbols. Which is to say, when the
2200$ echo "underlying C code makes a call to a routine called Perl_foo in
2201$ echo "the source, the name in the object modules or shareable images
2202$ echo "is really PERL_FOO. There are some packages that use an
2203$ echo "embedded perl interpreter that instead require case-sensitive
2204$ echo "linker symbols.
2205$ echo ""
f53b4005 2206$ echo "If you have no idea what this means, and don't have
498336ed 2207$ echo "any program requiring anything, choose the default.
498336ed 2208$ dflt = be_case_sensitive
a5fddd44 2209$ rp = "Build with case-sensitive symbols? [''dflt'] "
498336ed
CB
2210$ gosub myread
2211$ if ans.eqs."" then ans="''dflt'"
2212$ be_case_sensitive = "''ans'"
2213$!
2214$! IEEE math?
2215$ echo ""
2216$ echo "Perl normally uses G_FLOAT format floating point numbers
2217$ echo "internally, as do most things on VMS. You can, however, build
2218$ echo "with IEEE floating point numbers instead if you need to.
498336ed 2219$ dflt = use_ieee_math
a5fddd44 2220$ rp = "Use IEEE math? [''dflt'] "
498336ed
CB
2221$ gosub myread
2222$ if ans.eqs."" then ans="''dflt'"
2223$ use_ieee_math = "''ans'"
2224$ endif
2225$! CC Flags
2226$ echo ""
2227$ echo "You can, if you need to, pass extra flags on to the C
a5fddd44 2228$ echo "compiler. In general you should only do this if you really,
498336ed 2229$ echo "really know what you're doing.
498336ed 2230$ dflt = user_c_flags
f53b4005 2231$ rp = "Extra C flags [''dflt'] "
498336ed
CB
2232$ gosub myread
2233$ if ans.eqs."" then ans="''dflt'"
2234$ user_c_flags = "''ans'"
97abc6ad 2235$!
cc391245
CB
2236$! Ask whether they want to use secure logical translation when tainting
2237$ echo ""
2238$ echo "As Perl starts up, it checks several logical names, such as"
2239$ echo "PERL5LIB and PERL_ENV_TABLES, which allow you to modify aspects"
2240$ echo "of its behavior. For additional security, you may limit this"
2241$ echo "process to executive- and kernel-mode translation when tainting"
2242$ echo "is enabled. In this case, logical names normally skipped when"
2243$ echo "tainting is enabled (e.g. PERL5OPTS) are translated as well."
2244$ echo "If you do not choose to do this, the usual order of access modes"
2245$ echo "is used for logical name translation."
2246$ echo ""
2247$ echo "This restriction does not apply to the %ENV hash or to implicit"
2248$ echo "logical name translation during parsing of file specifications;"
2249$ echo "these always use the normal sequence of access modes for logical"
2250$ echo "name translation."
01792a70 2251$ dflt = "y"
cc391245
CB
2252$ rp = "Use secure logical name translation? [''dflt'] "
2253$ GOSUB myread
570bb66e
JH
2254$ IF ans .eqs. "" THEN ans = dflt
2255$ IF ans
2256$ THEN d_secintgenv := Y
2257$ ELSE d_secintgenv := N
2258$ ENDIF
cc391245
CB
2259$!
2260$! Ask whether they want to default filetypes
2261$ echo ""
2262$ echo "When you pass the name of a program to Perl on the command line,"
2263$ echo "it generally doesn't supply any defaults unless the -S command"
2264$ echo "line switch is specified. In keeping with the VMS tradition of"
2265$ echo "default file types, however, you can configure Perl to try default"
2266$ echo "file types of nothing, .pl, and .com, in that order (e.g. typing"
2267$ echo """$ perl foo"" would cause Perl to look for foo., then foo.pl, and"
2268$ echo "finally foo.com)."
8c99d73e
GS
2269$ echo ""
2270$ echo "This is currently broken in some configurations. Only enable it if
2271$ echo "you know what you're doing. "
570bb66e 2272$ dflt = "n"
cc391245
CB
2273$ rp = "Always use default file types? [''dflt'] "
2274$ GOSUB myread
570bb66e
JH
2275$ IF ans .EQS. "" THEN ans = dflt
2276$ IF ans
2277$ THEN d_alwdeftype := Y
2278$ ELSE d_alwdeftype := N
2279$ ENDIF
cc391245 2280$!
97abc6ad
HM
2281$! Ask if they want to use perl's memory allocator
2282$ echo ""
2283$ echo "Perl has a built-in memory allocator that's tuned for perl's
2284$ echo "normal memory usage. It's oftentimes better than the standard
2285$ echo "system memory allocator. It also has the advantage of providing
429a5e67 2286$ echo "memory allocation statistics, if you choose to enable them.
e6df7ed1 2287$ dflt = "n"
97abc6ad
HM
2288$ rp = "Build with perl's memory allocator? [''dflt'] "
2289$ GOSUB myread
570bb66e
JH
2290$ IF ans .eqs. "" THEN ans = dflt
2291$ IF ans
2292$ THEN mymalloc := Y
2293$ ELSE mymalloc := N
2294$ ENDIF
2295$ IF mymalloc
429a5e67 2296$ THEN
570bb66e 2297$ IF use_debugging_perl
429a5e67
DS
2298$ THEN
2299$ echo ""
2300$ echo "Perl can keep statistics on memory usage if you choose to use
2301$ echo "them. This is useful for debugging, but does have some
2302$ echo "performance overhead.
e6df7ed1 2303$ dflt = "n"
429a5e67
DS
2304$ rp = "Do you want the debugging memory allocator? [''dflt'] "
2305$ gosub myread
2306$ if ans.eqs."" then ans="''dflt'"
146174a9 2307$ use_debugmalloc = f$extract(0, 1, f$edit(ans, "COLLAPSE,UPCASE"))
429a5e67
DS
2308$ ENDIF
2309$ ! Check which memory allocator we want
2310$ echo ""
2311$ echo "There are currently three different memory allocators: the
2312$ echo "default (which is a pretty good general-purpose memory manager),
2313$ echo "the TWO_POT allocator (which is optimized to save memory for
2314$ echo "larger allocations), and PACK_MALLOC (which is optimized to save
2315$ echo "memory for smaller allocations). They're all good, but if your
2316$ echo "usage tends towards larger chunks use TWO_POT, otherwise use
2317$ echo "PACK_MALLOC."
429a5e67
DS
2318$ dflt = "DEFAULT"
2319$ rp = "Memory allocator (DEFAULT, TWO_POT, PACK_MALLOC) [''dflt'] "
2320$ GOSUB myread
2321$ if ans.eqs."" then ans = "''dflt'"
2322$ if ans.eqs."TWO_POT" then use_two_pot_malloc = "Y"
2323$ if ans.eqs."PACK_MALLOC" then use_pack_malloc = "Y"
2324$ ENDIF
97abc6ad
HM
2325$!
2326$! Ask for their default list of extensions to build
2327$ echo ""
2328$ echo "It's time to specify which modules you want to build into
2329$ echo "perl. Most of these are standard and should be chosen, though
2330$ echo "you might, for example, want to build GDBM_File instead of
cb50131a
CB
2331$ echo "SDBM_File if you have the GDBM library built on your machine.
2332$ echo "Whatever you do, make sure the re module is first or things will
2333$ echo "break badly"
97abc6ad
HM
2334$ echo "
2335$ echo "Which modules do you want to build into perl?"
146174a9 2336$! dflt = "Fcntl Errno File::Glob IO Opcode Byteloader Devel::Peek Devel::DProf Data::Dumper attrs re VMS::Stdio VMS::DCLsym B SDBM_File"
a5fddd44 2337$ dflt = "re Fcntl Errno File::Glob IO Opcode Devel::Peek Devel::DProf Data::Dumper attrs VMS::Stdio VMS::DCLsym B SDBM_File Storable Thread Sys::Hostname"
570bb66e 2338$ if Using_Dec_C
97abc6ad
HM
2339$ THEN
2340$ dflt = dflt + " POSIX"
97abc6ad
HM
2341$ ENDIF
2342$ rp = "[''dflt'] "
2343$ GOSUB myread
2344$ if ans.eqs."" then ans = "''dflt'"
8f6c6e69
CB
2345$ a = ""
2346$ j = 0
2347$ xloop1:
2348$ x = f$elem(j," ",ans)
2349$ j = j + 1
2350$ if x .eqs. " " then goto exloop1
2351$ xloop2:
2352$ k = f$locate("::",x)
2353$ if k .ge. f$len(x) then goto exloop2
2354$ x = f$extract(0,k,x) + "/" + f$extract(k+2,f$len(x)-2,x)
2355$ goto xloop2
2356$ exloop2:
2357$ a = a + " " + x
2358$ goto xloop1
2359$ exloop1:
2360$ ans = f$edit(a,"trim")
2361$!
2362$ a = ""
2363$ j = 0
2364$ xloop3:
2365$ x = f$elem(j," ",dflt)
2366$ j = j + 1
2367$ if x .eqs. " " then goto exloop3
2368$ xloop4:
2369$ k = f$locate("::",x)
2370$ if k .ge. f$len(x) then goto exloop4
2371$ x = f$extract(0,k,x) + "/" + f$extract(k+2,f$len(x)-2,x)
2372$ goto xloop4
2373$ exloop4:
2374$ a = a + " " + x
2375$ goto xloop3
2376$ exloop3:
2377$ dflt = f$edit(a,"trim")
2378$!
97abc6ad 2379$ extensions = "''ans'"
570bb66e 2380$ known_extensions = "''dflt'"
97abc6ad
HM
2381$!
2382$! %Config-I-VMS, determine build/make utility here (make gmake mmk mms)
2383$ echo ""
570bb66e 2384$ echo "Checking your ""make"" utilities..."
97abc6ad
HM
2385$! If the 'build' that you use is not here add it and it's test
2386$! switch to the _END_ of these strings (and increment max_build)
2387$! (e.g. builders = builders + "/FOOMAKE"
2388$! probers = probers + " -fooVersionSwitch"
2389$! ) & please let me know about it.
2390$ builders = "IMAKE/GNUMAKE/MGMAKE/GMAKE/MAKE/MMS/MMK"
2391$ probers = "-f Makefile. -v!-f Makefile. -v!-f Makefile. -v!-f Makefile. -v!-f Makefile. -v!/IDENT!/IDENT"
2392$ max_build = 7
2393$!
2394$ orig_dflt = "MMK"
2395$ default_set = ""
2396$ ok_builders = ""
2397$ OPEN/WRITE/ERROR=Open_error CONFIG Makefile.
2398$ WRITE CONFIG "dont_make_anything_yet:"
2399$ WRITE CONFIG F$FAO("!_")
2400$ CLOSE CONFIG
2401$ n = 0
2402$ messages = F$ENVIRONMENT("MESSAGE")
2403$Build_probe:
2404$ build = F$ELEMENT(n,"/",builders)
2405$ probe = F$ELEMENT(n,"!",probers)
2406$ echo "Testing whether you have ''build' on your system..."
570bb66e
JH
2407$!
2408$! Noted with GNU Make version 3.60 that the $status and $severity
2409$! with the 'probe' Makefile appear to be: $STATUS == "%X1000000C"
2410$! $SEVERITY == "4".
2411$!
a3ef2c6f
GS
2412$ SET NOON
2413$ ON CONTROL_Y THEN GOTO Reenable_messages_build
2414$ SET MESSAGE/NOFAC/NOSEV/NOIDENT/NOTEXT
97abc6ad 2415$ 'build' 'probe'
570bb66e 2416$ IF ($SEVERITY .EQ. 1) ! not adequate?
97abc6ad
HM
2417$ THEN
2418$ echo "OK."
2419$ IF (build .EQS. orig_dflt)
2420$ THEN
2421$ default_set = "TRUE"
2422$ dflt = build
2423$ ENDIF
2424$ ok_builders = ok_builders + " " + build
2425$ IF (.NOT. default_set) THEN dflt = build
2426$ ELSE
2427$ echo "Nope."
2428$ ENDIF
a3ef2c6f
GS
2429$Reenable_messages_build:
2430$ SET MESSAGE 'messages'
2431$ SET ON
97abc6ad
HM
2432$ n = n + 1
2433$ IF (n .LT. max_build) THEN GOTO Build_probe
2434$!
2435$ echo ""
2436$ IF (ok_builders .NES. "")
2437$ THEN
2438$ echo "Here is the list of builders you can apparently use:"
2439$ echo "(",ok_builders," )"
a5fddd44 2440$ rp = "Which """"make"""" utility do you wish to use? [''dflt'] "
97abc6ad
HM
2441$ GOSUB myread
2442$ ans = F$EDIT(ans,"TRIM, COMPRESS")
2443$ ans = F$EXTRACT(0,F$LOCATE(" ",ans),ans) !throw out "-f Makefile." here
2444$ IF (ans .EQS. "")
2445$ THEN build = dflt
2446$ ELSE build = ans
2447$ ENDIF
2448$ ELSE
2449$ TYPE SYS$INPUT:
2450
2451%Config-E-VMS, ERROR:
2452 Well this looks pretty serious. Perl5 cannot be compiled without a "make"
2453 utility of some sort and after checking my "builders" list I cannot find
2454 the symbol or command you use on your system to compile programs.
2455
570bb66e 2456$ READ SYS$COMMAND/PROMPT="Which ""MMS"" do you use? " ans
97abc6ad
HM
2457$ ans = F$EDIT(ans,"TRIM, COMPRESS")
2458$ ans = F$EXTRACT(0,F$LOCATE(" ",ans),ans) !throw out "-f Makefile." here
2459$ IF (ans .EQS. "")
2460$ THEN build = dflt
2461$ echo "I don't know where 'make' is, and my life depends on it."
2462$ echo "Go find a make program or fix your DCL$PATH setting!"
2463$ echo "ABORTING..."
2464$ SET DEFAULT 'vms_default_directory_name' !be kind rewind
2465$ STOP
2466$ EXIT 2 !$STATUS = "%X00000002" (error)
2467$ ELSE
2468$ build = ans
2469$ ENDIF
2470$ ENDIF
2471$!
2472$ DELETE/NOLOG Makefile.;
2473$ GOTO Beyond_open
2474$Open_error:
2475$ TYPE SYS$INPUT:
2476
2477 There seems to be trouble. I just tried to create a file in
2478$ echo4 'F$ENVIRONMENT("DEFAULT")'
2479$ TYPE SYS$INPUT:
2480 but was unsuccessful. I am stopping now. Please check that directories'
2481 PROTECTION bits. I will leave you in the directory where you started
2482 Configure.com
2483$ echo4 "ABORTING..."
2484$ GOTO Clean_up
2485$ STOP
2486$ EXIT
2487$!
2488$Beyond_open:
2489$! echo " Very well I will proceed with ""''build'"""
2490$ make = F$EDIT(build,"UPCASE")
2491$!
2492$!: locate the preferred pager for this system
2493$!pagers = "most|more|less|type/page"
a5fddd44
PP
2494$!rp="What pager is used on your system? [''dflt'] "
2495$ pager="most"
97abc6ad
HM
2496$!
2497$! update [.vms]config.vms here
2498$!
2499$! update makefile here
2500$! echo4 "Updating makefile..."
2501$!
2502$ IF (make .EQS. "MMS").OR.(make .EQS. "MMK")
2503$ THEN
08c7cbbb
GS
2504$ makefile = "" !wrt MANIFEST dir
2505$ UUmakefile = "[-]DESCRIP.MMS" !wrt CWD dir
2506$ DEFmakefile = "DESCRIP.MMS" !wrt DEF dir (?)
570bb66e 2507$ Makefile_SH = "descrip_mms.template"
97abc6ad 2508$ ELSE
08c7cbbb
GS
2509$ makefile = " -f Makefile." !wrt MANIFEST dir
2510$ UUmakefile = "[-]Makefile." !wrt CWD dir
2511$ DEFmakefile = "Makefile." !wrt DEF dir (?)
570bb66e 2512$ Makefile_SH = "Makefile.in"
97abc6ad
HM
2513$ ENDIF
2514$!
2515$ IF macros.NES.""
2516$ THEN
2517$ tmp = F$LENGTH(macros)
2518$ macros = F$EXTRACT(0,(tmp-1),macros) !miss trailing comma
2519$ macros = "/macro=(" + macros + ")"
2520$ ENDIF
498336ed
CB
2521$! Build up the extra C flags
2522$!
2523$ if use_ieee_math
2524$ then
2525$ extra_flags = "''extra_flags'" + "/float=ieee/ieee=denorm_results"
2526$ endif
2527$ if be_case_sensitive
2528$ then
2529$ extra_flags = "''extra_flags'" + "/Names=As_Is"
2530$ endif
2531$ extra_flags = "''extra_flags'" + "''user_c_flags'"
97abc6ad 2532$!
570bb66e
JH
2533$ min_pgflquota = "100000"
2534$ pgflquota = F$STRING(F$GETJPI("","PGFLQUOTA"))
2535$ IF pgflquota .LES. min_pgflquota
2536$ THEN
2537$ echo4 "Your PGFLQUOTA of ''pgflquota' appears too small to build ''package'."
2538$ READ SYS$COMMAND/PROMPT="Continue? [n] " ans
2539$ IF ans
2540$ THEN
2541$ echo4 "Continuing..."
2542$ ELSE
2543$ echo4 "ABORTING..."
2544$ GOTO Clean_up
2545$ ENDIF
2546$ ENDIF
97abc6ad
HM
2547$!
2548$ echo ""
570bb66e
JH
2549$ echo4 "Checking the C run-time library."
2550$!
56aeb0ae 2551$! Former SUBCONFIGURE.COM
570bb66e
JH
2552$!
2553$! - build a config.sh for VMS Perl.
2554$! - use built config.sh to take config_h.SH -> config.h
2555$! - also take vms/descrip_mms.template -> descrip.mms (VMS Makefile)
2556$! vms/Makefile.in -> Makefile. (VMS GNU Makefile?)
2557$! vms/Makefile.SH -> Makefile. (VMS GNU Makefile?)
2558$! - build Build_Ext.Com extension builder procedure.
2559$!
2560$! Note for folks from other platforms changing things in here:
2561$!
2562$! Fancy changes (based on compiler capabilities or VMS version or
2563$! whatever) are tricky, so go ahead and punt on those.
2564$!
2565$! Simple changes, though (say, always setting something to 1, or undef,
2566$! or something like that) are straightforward. Adding a new constant
2567$! item for the ultimately created config.sh requires at least one
2568$! (possibly more) line(s) to this file.
2569$!
2570$! Add a line in the format:
2571$!
2572$! $ WC "foo='undef'"
2573$!
2574$! somewhere between the line tagged '##BEGIN WRITE NEW CONSTANTS HERE##'
2575$! and the one tagged '##END WRITE NEW CONSTANTS HERE##' (note the order
2576$! is sorted ASCII and corresponds to the output of config.sh in the
2577$! Bourne shell version of Configure).
2578$! Be very careful with quoting, as it can be tricky.
2579$! For example if instead of a constant string like 'undef' or 'define'
2580$! you wanted to add something to VMS's config.sh that looks like:
2581$!
2582$! blank_string=''
2583$!
2584$! then add a line that looks like this before the
2585$! '##END WRITE NEW CONSTANTS HERE##' tagged line:
2586$!
2587$! $ WC "blank_string='" + "'"
2588$!
2589$! (+ is the string concatenator and "''var'" has the effect
2590$! of "${var}" in perl or sh, but "'const'" is not interpolated).
2591$!
2592$! Note that unitialized variables, such as a line like:
2593$!
2594$! $ WC "new_var='" + new_var + "'"
2595$!
2596$! should be avoided unless new_var has a value assigned prior
2597$! to that line (think of perl's -w warnings).
2598$!
2599$! %DCL-W-UNDSYM, undefined symbol - check validity and spelling
2600$! \NEW_VAR\
2601$!
2602$!
2603$ vms_ver = F$EXTRACT(1,3, osvers)
2604$ IF F$LENGTH(Mcc) .EQ. 0 THEN Mcc := "cc"
2605$ MCC = f$edit(mcc, "UPCASE")
2606$ C_Compiler_Replace := "CC=CC=''Mcc'''ccflags'"
2607$ IF Using_Dec_C
2608$ THEN
2609$ Checkcc := "''Mcc'/prefix=all"
2610$ ELSE
2611$ IF using_cxx
2612$ THEN
2613$ Checkcc := cxx
2614$ ELSE
2615$ Checkcc := "''Mcc'"
2616$ ENDIF
2617$ ENDIF
2618$ ccflags = ccflags + extra_flags
2619$ IF be_case_sensitive
2620$ THEN
2621$ d_vms_be_case_sensitive = "define"
2622$ ELSE
2623$ d_vms_be_case_sensitive = "undef"
2624$ ENDIF
2625$! Some constant defaults.
2626$ hwname = f$getsyi("HW_NAME")
2627$ myname = myhostname
2628$ IF myname .EQS. "" THEN myname = F$TRNLNM("SYS$NODE")
2629$!
2630$ ccdlflags=""
2631$ cccdlflags=""
2632$!
2633$ IF use64bitint .OR. use64bitint .EQS. "define"
2634$ THEN
2635$ use64bitint = "define"
2636$ uselargefiles = "define"
2637$ uselongdouble = "define"
2638$ usemorebits = "define"
2639$ ELSE
2640$ use64bitint = "undef"
2641$ uselargefiles = "undef"
2642$ uselongdouble = "undef"
2643$ usemorebits = "undef"
2644$ ENDIF
2645$ IF use64bitall .OR. use64bitall .EQS. "define"
2646$ THEN
2647$ use64bitall = "define"
2648$ ELSE
2649$ use64bitall = "undef"
2650$ ENDIF
2651$!
2652$ usemymalloc=mymalloc
2653$!
2654$ perl_cc=Mcc
2655$!
2656$ IF (sharedperl .AND. F$GETSYI("HW_MODEL") .GE. 1024)
2657$ THEN
2658$ obj_ext=".abj"
2659$ so="axe"
2660$ dlext="axe"
2661$ exe_ext=".axe"
2662$ lib_ext=".alb"
2663$ ELSE
2664$ obj_ext=".obj"
2665$ so="exe"
2666$ dlext="exe"
2667$ exe_ext=".exe"
2668$ lib_ext=".olb"
2669$ ENDIF
2670$ dlobj="dl_vms''obj_ext'"
2671$!
2672$ cppstdin="''perl_cc'/noobj/preprocess=sys$output sys$input"
2673$ cppminus=" "
2674$ cpprun="''perl_cc'/noobj/preprocess=sys$output sys$input"
2675$ cpplast=" "
2676$!
2677$ timetype="time_t"
2678$ signal_t="void"
2679$ stdchar="char"
2680$!
2681$ IF mymalloc
2682$ THEN d_mymalloc="define"
2683$ ELSE d_mymalloc="undef"
2684$ ENDIF
2685$!
2686$ usedl="define"
2687$ startperl="""$ perl 'f$env(\""procedure\"")' 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' !\n$ exit++ + ++$status != 0 and $exit = $status = undef;"""
570bb66e
JH
2688$!
2689$ IF ((Use_Threads) .AND. (vms_ver .LES. "6.2"))
2690$ THEN
2691$ libs="SYS$SHARE:CMA$LIB_SHR.EXE/SHARE SYS$SHARE:CMA$RTL.EXE/SHARE SYS$SHARE:CMA$OPEN_LIB_SHR.exe/SHARE SYS$SHARE:CMA$OPEN_RTL.exe/SHARE"
2692$ ELSE
2693$ libs=" "
2694$ ENDIF
2695$ IF Using_Dec_C
2696$ THEN
2697$ libc="(DECCRTL)"
2698$ ELSE
2699$ libc=" "
2700$ ENDIF
2701$!
2702$! Are we 64 bit?
2703$!
2704$ IF use64bitint .OR. use64bitint .EQS. "define"
2705$ THEN
2706$ d_PRId64 = "define"
59a27e12
PP
2707$ d_PRIEldbl_cap = "define"
2708$ d_PRIFldbl_cap = "define"
2709$ d_PRIGldbl_cap = "define"
2710$ d_PRIeldbl = "define"
570bb66e
JH
2711$ d_PRIfldbl = "define"
2712$ d_PRIgldbl = "define"
2713$ d_PRIu64 = "define"
2714$ d_PRIo64 = "define"
2715$ d_PRIx64 = "define"
2716$ sPRId64 = """Ld"""
59a27e12
PP
2717$ sPRIEldbl_cap = """LE"""
2718$ sPRIFldbl_cap = """LF"""
2719$ sPRIGldbl_cap = """LG"""
2720$ sPRIX64_cap = """LX"""
2721$ sPRIeldbl = """Le"""
570bb66e
JH
2722$ sPRIfldbl = """Lf"""
2723$ sPRIgldbl = """Lg"""
59a27e12 2724$ sPRIi64 = """Li"""
570bb66e
JH
2725$ sPRIo64 = """Lo"""
2726$ sPRIu64 = """Lu"""
2727$ sPRIx64 = """Lx"""
2728$ d_quad = "define"
2729$ quadtype = "long long"
2730$ uquadtype = "unsigned long long"
2731$ quadkind = "QUAD_IS_LONG_LONG"
2732$ d_frexpl = "define"
2733$ d_isnanl = "define"
2734$ d_modfl = "define"
2735$ ELSE
2736$ d_PRId64 = "undef"
59a27e12
PP
2737$ d_PRIEldbl_cap = "define"
2738$ d_PRIFldbl_cap = "define"
2739$ d_PRIGldbl_cap = "define"
2740$ d_PRIX64_cap = "undef"
2741$ d_PRIeldbl = "define"
570bb66e
JH
2742$ d_PRIfldbl = "undef"
2743$ d_PRIgldbl = "undef"
2744$ d_PRIu64 = "undef"
2745$ d_PRIo64 = "undef"
2746$ d_PRIx64 = "undef"
2747$ sPRId64 = ""
59a27e12
PP
2748$ sPRIEldbl_cap = """E"""
2749$ sPRIFldbl_cap = """F"""
2750$ sPRIGldbl_cap = """G"""
2751$ sPRIX64_cap = """lX"""
2752$ sPRIeldbl = """e"""
2753$ sPRIfldbl = """f"""
2754$ sPRIgldbl = """g"""
2755$ sPRIi64 = ""
570bb66e
JH
2756$ sPRIo64 = ""
2757$ sPRIu64 = ""
2758$ sPRIx64 = ""
2759$ d_quad = "undef"
2760$ quadtype = "long"
2761$ uquadtype = "unsigned long"
2762$ quadkind = "QUAD_IS_LONG"
2763$ d_frexpl = "undef"
2764$ d_isnanl = "undef"
2765$ d_modfl = "undef"
2766$ ENDIF
b5ddfb46
PP
2767$ d_SCNfldbl = d_PRIfldbl
2768$ sSCNfldbl = sPRIfldbl ! expect consistency
570bb66e
JH
2769$!
2770$! Now some that we build up
2771$!
2772$ IF Use_Threads
2773$ THEN
2774$ IF use_5005_threads
2775$ THEN
2776$ arch = "''arch'-thread"
2777$ archname = "''archname'-thread"
2778$ d_old_pthread_create_joinable = "undef"
2779$ old_pthread_create_joinable = " "
2780$ use5005threads = "define"
2781$ useithreads = "undef"
2782$ ELSE
2783$ arch = "''arch'-ithread"
2784$ archname = "''archname'-ithread"
2785$ d_old_pthread_create_joinable = "undef"
2786$ old_pthread_create_joinable = " "
2787$ use5005threads = "undef"
2788$ useithreads = "define"
2789$ ENDIF
2790$ ELSE
2791$ d_old_pthread_create_joinable = "undef"
2792$ old_pthread_create_joinable = " "
2793$ use5005threads = "undef"
2794$ useithreads = "undef"
2795$ ENDIF
2796$!
2797$! Some that we need to invoke the compiler for
2798$!
2799$!
2800$! handy construction aliases/symbols
2801$!
2802$ OS := "open/write CONFIG []try.c"
2803$ WS := "write CONFIG"
2804$ CS := "close CONFIG"
2805$ DS := "delete/nolog/noconfirm []try.*;*"
2806$ Needs_Opt := N
2807$ good_compile = %X10B90001
2808$ IF Using_Gnu_C
2809$ THEN
2810$ open/write OPTCHAN []try.opt
2811$ write OPTCHAN "Gnu_CC:[000000]gcclib.olb/library"
2812$ write OPTCHAN "Sys$Share:VAXCRTL/Share"
2813$ Close OPTCHAN
2814$ Needs_Opt := Y
2815$ good_compile = %X10000001
2816$ ENDIF
2817$ IF using_cxx
2818$ THEN
2819$ good_compile = %X15F60001
2820$ ENDIF
2821$ good_link = %X10000001
2822$ tmp = "" ! null string default
2823$!
2824$ GOTO beyond_compile_ok
2825$!
2826$! Check for type sizes
2827$!
2828$type_size_check:
2829$!
2830$ OS
2831$ WS "#ifdef __DECC
2832$ WS "#include <stdlib.h>
2833$ WS "#endif
2834$ WS "#include <stdio.h>
2835$ WS "int main()
2836$ WS "{"
2837$ WS "printf(""%d\n"", sizeof(''tmp'));"
2838$ WS "exit(0);
2839$ WS "}"
2840$ CS
2841$ GOSUB compile
2842$ RETURN
2843$!
2844$!: locate header file
2845$findhdr:
2846$!
2847$ OS
2848$ WS "#ifdef __DECC
2849$ WS "#include <stdlib.h>
2850$ WS "#endif
2851$ WS "#include <stdio.h>
2852$ WS "#include <''tmp'>"
2853$ WS "int main()
2854$ WS "{"
2855$ WS "printf(""define\n"");"
2856$ WS "exit(0);
2857$ WS "}"
2858$ CS
2859$ GOSUB link_ok
2860$ RETURN
2861$!
2862$!: define an alternate in-header-list? function
2863$inhdr:
2864$!
2865$ GOSUB findhdr
2866$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
2867$ THEN
2868$ echo4 "<''tmp'> found."
2869$ tmp = "define"
2870$ ELSE
2871$ echo4 "<''tmp'> NOT found."
2872$ tmp = "undef"
2873$ ENDIF
2874$ RETURN
2875$!
2876$!: define an is-in-libc? function
2877$inlibc:
2878$ GOSUB link_ok
2879$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
2880$ THEN
2881$ echo4 "''tmp'() found."
2882$ tmp = "define"
2883$ ELSE
2884$ echo4 "''tmp'() NOT found."
2885$ tmp = "undef"
2886$ ENDIF
2887$ RETURN
2888$!
2889$!: define a shorthand compile call
2890$compile:
2891$ GOSUB link_ok
2892$just_mcr_it:
2893$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
2894$ THEN
2895$ OPEN/WRITE CONFIG []try.out
2896$ DEFINE/USER_MODE SYS$ERROR CONFIG
2897$ DEFINE/USER_MODE SYS$OUTPUT CONFIG
2898$ MCR []try.exe
2899$ CLOSE CONFIG
2900$ OPEN/READ CONFIG []try.out
2901$ READ CONFIG tmp
2902$ CLOSE CONFIG
2903$ DELETE/NOLOG/NOCONFIRM []try.out;
2904$ DELETE/NOLOG/NOCONFIRM []try.exe;
2905$ ELSE
2906$ tmp = "" ! null string default
2907$ ENDIF
2908$ RETURN
2909$!
2910$link_ok:
2911$ GOSUB compile_ok
2912$ DEFINE/USER_MODE SYS$ERROR _NLA0:
2913$ DEFINE/USER_MODE SYS$OUTPUT _NLA0:
2914$ SET NOON
2915$ IF Needs_Opt
2916$ THEN
2917$ 'ld' try.obj,try.opt/opt
2918$ link_status = $status
2919$ ELSE
2920$ 'ld' try.obj
2921$ link_status = $status
2922$ ENDIF
2923$ SET ON
2924$ IF F$SEARCH("try.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM try.obj;
2925$ RETURN
2926$!
2927$!: define a shorthand compile call for compilations that should be ok.
2928$compile_ok:
2929$ DEFINE/USER_MODE SYS$ERROR _NLA0:
2930$ DEFINE/USER_MODE SYS$OUTPUT _NLA0:
2931$ SET NOON
2932$ 'Checkcc' try.c
2933$ compile_status = $status
2934$ SET ON
2935$ DELETE/NOLOG/NOCONFIRM try.c;
2936$ RETURN
2937$!
2938$beyond_compile_ok:
2939$!
2940$! Check for __STDC__
2941$!
2942$ OS
2943$ WS "#ifdef __DECC
2944$ WS "#include <stdlib.h>
2945$ WS "#endif
2946$ WS "#include <stdio.h>
2947$ WS "int main()
2948$ WS "{"
2949$ WS "#ifdef __STDC__
2950$ WS "printf(""42\n"");
2951$ WS "#else
2952$ WS "printf(""1\n"");
2953$ WS "#endif
2954$ WS "exit(0);
2955$ WS "}"
2956$ CS
2957$ GOSUB compile
2958$ cpp_stuff=tmp
2959$ IF F$INTEGER(tmp) .eq. 42
2960$ THEN
2961$ echo4 "Your C compiler and pre-processor defines the symbol:"
2962$ echo4 "__STDC__"
2963$ ENDIF
2964$!
2965$! Check for double size
2966$!
2967$ echo4 "Checking to see how big your double precision numbers are..."
2968$ tmp="double"
2969$ GOSUB type_size_check
2970$ doublesize = tmp
2971$ echo "Your double is ''doublesize' bytes long."
2972$!
2973$! Check for long double size
2974$!
2975$ OS
2976$ WS "#ifdef __DECC
2977$ WS "#include <stdlib.h>
2978$ WS "#endif
2979$ WS "#include <stdio.h>
2980$ WS "int main()
2981$ WS "{"
2982$ WS "printf(""%d\n"", sizeof(long double));
2983$ WS "exit(0);
2984$ WS "}"
2985$ CS
2986$ echo4 "Checking to see if you have long double..."
2987$ GOSUB link_ok
2988$ IF link_status .NE. good_link
2989$ THEN
2990$ longdblsize="0"
2991$ d_longdbl="undef"
2992$ echo "You do not have long double."
2993$ ELSE
2994$ echo "You have long double."
2995$ echo4 "Checking to see how big your long doubles are..."
2996$ GOSUB just_mcr_it
2997$ longdblsize = tmp
2998$ d_longdbl = "define"
2999$ echo "Your long doubles are ''longdblsize' bytes long."
3000$ ENDIF
3001$!
3002$!: check for long long
3003$ OS
3004$ WS "#ifdef __DECC
3005$ WS "#include <stdlib.h>
3006$ WS "#endif
3007$ WS "#include <stdio.h>
3008$ WS "int main()
3009$ WS "{"
3010$ WS "printf(""%d\n"", sizeof(long long));
3011$ WS "exit(0);
3012$ WS "}"
3013$ CS
3014$ echo4 "Checking to see if you have long long..."
3015$ GOSUB link_ok
3016$ IF link_status .NE. good_link
3017$ THEN
3018$ longlongsize="0"
3019$ d_longlong="undef"
3020$ echo "You do not have long long."
3021$ ELSE
3022$ echo "You have long long."
3023$ echo4 "Checking to see how big your long longs are..."
3024$ GOSUB just_mcr_it
3025$ longlongsize = tmp
3026$ d_longlong = "define"
3027$ echo "Your long longs are ''longlongsize' bytes long."
3028$ ENDIF
3029$!
3030$! Check the prototype for getgid
3031$!
3032$ echo "Looking for the type for group ids returned by getgid()."
3033$ OS
3034$ WS "#ifdef __DECC
3035$ WS "#include <stdlib.h>
3036$ WS "#endif
3037$ WS "#include <stdio.h>
3038$ WS "#include <types.h>
3039$ WS "int main()
3040$ WS "{"
3041$ WS "gid_t foo;
3042$ WS "exit(0);
3043$ WS "}"
3044$ CS
3045$ GOSUB compile_ok
3046$ IF compile_status .NE. good_compile
3047$ THEN
3048$! Okay, gid_t failed. Must be unsigned int
3049$ gidtype = "unsigned int"
3050$ echo4 "assuming ""''gidtype'""."
3051$ ELSE
3052$ gidtype = "gid_t"
3053$ echo4 "gid_t found."
3054$ ENDIF
3055$!
3056$! Check to see if we've got dev_t
3057$!
3058$ echo "Looking for the type for dev."
3059$ OS
3060$ WS "#ifdef __DECC
3061$ WS "#include <stdlib.h>
3062$ WS "#endif
3063$ WS "#include <stdio.h>
3064$ WS "#include <types.h>
3065$ WS "int main()
3066$ WS "{"
3067$ WS "dev_t foo;
3068$ WS "exit(0);
3069$ WS "}"
3070$ CS
3071$ GOSUB compile_ok
3072$ IF compile_status .NE. good_compile
3073$ THEN
3074$! Okay, dev_t failed. Must be unsigned int
3075$ devtype = "unsigned int"
3076$ echo4 "assuming ""''devtype'""."
3077$ ELSE
3078$ devtype = "dev_t"
3079$ echo4 "dev_t found."
3080$ ENDIF
3081$!
3082$! Check to see if we've got unistd.h (which we ought to, but you never know)
3083$!
3084$ i_netdb = "undef"
3085$ tmp = "unistd.h"
3086$ GOSUB inhdr
3087$ i_unistd = tmp
3088$!
3089$!: see if this is a libutil.h system
3090$!
3091$ tmp = "libutil.h"
3092$ GOSUB inhdr
3093$ i_libutil = tmp
3094$!
3095$! Check to see if we've got shadow.h (probably not, but...)
3096$!
3097$ tmp = "shadow.h"
3098$ GOSUB inhdr
3099$ i_shadow = tmp
3100$!
3101$! Check to see if we've got socks.h (probably not, but...)
3102$!
3103$ tmp = "socks.h"
3104$ GOSUB inhdr
3105$ i_socks = tmp
3106$!
3107$! Check the prototype for select
3108$!
3109$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3110$ THEN
3111$ OS
3112$ WS "#ifdef __DECC
3113$ WS "#include <stdlib.h>
3114$ WS "#endif
3115$ WS "#include <stdio.h>
3116$ WS "#include <types.h>
3117$ IF i_unistd .EQS. "define" THEN WS "#include <unistd.h>
3118$ IF Has_Socketshr
3119$ THEN
3120$ WS "#include <socketshr.h>"
3121$ ELSE
3122$ WS "#include <time.h>
3123$ WS "#include <socket.h>
3124$ ENDIF
3125$ WS "int main()
3126$ WS "{"
3127$ WS "fd_set *foo;
3128$ WS "int bar;
3129$ WS "foo = NULL;
3130$ WS "bar = select(2, foo, foo, foo, NULL);
3131$ WS "exit(0);
3132$ WS "}"
3133$ CS
3134$ GOSUB compile_ok
3135$ IF compile_status .NE. good_compile
3136$ THEN
3137$! Okay, select failed. Must be an int *
3138$ selecttype = "int *"
3139$ echo4 "select() NOT found."
3140$ ELSE
3141$ selecttype="fd_set *"
3142$ echo4 "select() found."
3143$ ENDIF
3144$ ELSE
3145$ ! No sockets, so stick in an int * : no select, so pick a harmless default
3146$ selecttype = "int *"
3147$ ENDIF
3148$!
3149$! Check to see if fd_set exists
3150$!
3151$ echo "Checking to see how well your C compiler handles fd_set and friends ..."
3152$ OS
3153$ WS "#ifdef __DECC
3154$ WS "#include <stdlib.h>
3155$ WS "#endif
3156$ WS "#include <stdio.h>
3157$ WS "#include <types.h>
3158$ IF Has_Socketshr
3159$ THEN
3160$ WS "#include <socketshr.h>"
3161$ ENDIF
3162$ IF Has_Dec_C_Sockets
3163$ THEN
3164$ WS "#include <time.h>
3165$ WS "#include <socket.h>
3166$ ENDIF
3167$ WS "int main()
3168$ WS "{"
3169$ WS "fd_set *foo;
3170$ WS "int bar;
3171$ WS "exit(0);
3172$ WS "}"
3173$ CS
3174$ GOSUB compile_ok
3175$ IF compile_status .ne. good_compile
3176$ THEN
3177$! Okay, fd_set failed. Must not exist
3178$ d_fd_set = "undef"
3179$ echo4 "Hmm, your compiler has some difficulty with fd_set."
3180$ ELSE
3181$ d_fd_set="define"
3182$ echo4 "Well, your system knows about the normal fd_set typedef..."
3183$ ENDIF
3184$!
3185$! Check for inttypes.h
3186$!
3187$ tmp = "inttypes.h"
3188$ GOSUB inhdr
3189$ i_inttypes = tmp
3190$!
3191$! Check to see if off64_t exists
3192$!
3193$ echo4 "Checking to see if you have off64_t..."
3194$ OS
3195$ WS "#ifdef __DECC
3196$ WS "#include <stdlib.h>
3197$ WS "#endif
3198$ WS "#include <stdio.h>
3199$ WS "#include <types.h>
3200$ WS "#''i_inttypes IIH
3201$ WS "#ifdef IIH
3202$ WS "#include <inttypes.h>
3203$ WS "#endif
3204$ WS "int main()
3205$ WS "{"
3206$ WS "off64_t bar;
3207$ WS "exit(0);
3208$ WS "}"
3209$ CS
3210$ GOSUB compile_ok
3211$ IF compile_status .EQ. good_compile
3212$ THEN
3213$ d_off64_t="define"
3214$ echo "You have off64_t."
3215$ ELSE
3216$ d_off64_t = "undef"
3217$ echo "You do not have off64_t."
3218$ ENDIF
3219$!
3220$! Check to see if fpos64_t exists
3221$!
3222$ echo4 "Checking to see if you have fpos64_t..."
3223$ OS
3224$ WS "#ifdef __DECC
3225$ WS "#include <stdlib.h>
3226$ WS "#endif
3227$ WS "#include <stdio.h>
3228$ WS "#include <types.h>
3229$ WS "#''i_inttypes IIH
3230$ WS "#ifdef IIH
3231$ WS "#include <inttypes.h>
3232$ WS "#endif
3233$ WS "int main()
3234$ WS "{"
3235$ WS "fpos64_t bar;
3236$ WS "exit(0);
3237$ WS "}"
3238$ CS
3239$ GOSUB compile_ok
3240$ IF compile_status .EQ. good_compile
3241$ THEN
3242$ d_fpos64_t="define"
3243$ echo "You have fpos64_t."
3244$ ELSE
3245$ d_fpos64_t = "undef"
3246$ echo "You do not have fpos64_t."
3247$ ENDIF
3248$!
3249$! Check to see if int64_t exists
3250$!
3251$ echo4 "Checking to see if you have int64_t..."
3252$ OS
3253$ WS "#ifdef __DECC
3254$ WS "#include <stdlib.h>
3255$ WS "#endif
3256$ WS "#include <stdio.h>
3257$ WS "#include <types.h>
3258$ WS "#''i_inttypes IIH
3259$ WS "#ifdef IIH
3260$ WS "#include <inttypes.h>
3261$ WS "#endif
3262$ WS "int main()
3263$ WS "{"
3264$ WS "int64_t bar;
3265$ WS "exit(0);
3266$ WS "}"
3267$ CS
3268$ GOSUB compile_ok
3269$ IF compile_status .EQ. good_compile
3270$ THEN
3271$ d_int64_t="define"
3272$ echo "You have int64_t."
3273$ ELSE
3274$ d_int64_t = "undef"
3275$ echo "You do not have int64_t."
3276$ ENDIF
3277$!
3278$!: see if this is a netdb.h system
3279$ IF Has_Dec_C_Sockets
3280$ THEN
3281$ tmp = "netdb.h"
3282$ GOSUB inhdr
3283$ i_netdb = tmp
3284$ ENDIF
3285$!
3286$! Check for h_errno
3287$!
3288$ echo4 "Checking to see if you have h_errno..."
3289$ OS
3290$ WS "#ifdef __DECC
3291$ WS "#include <stdlib.h>
3292$ WS "#endif
3293$ WS "#include <stdio.h>
3294$ IF i_unistd .EQS. "define" THEN WS "#include <unistd.h>
3295$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
3296$ WS "int main()
3297$ WS "{"
3298$ WS "h_errno = 3;
3299$ WS "exit(0);
3300$ WS "}"
3301$ CS
3302$ GOSUB link_ok
3303$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
3304$ THEN
3305$ d_herrno="define"
3306$ echo "You have h_errno."
3307$ ELSE
3308$ d_herrno="undef"
3309$ echo "You do not have h_errno."
3310$ ENDIF
3311$!
3312$! Check to see if gethostname exists
3313$!
3314$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3315$ THEN
3316$ OS
3317$ WS "#ifdef __DECC
3318$ WS "#include <stdlib.h>
3319$ WS "#endif
3320$ WS "#include <stdio.h>
3321$ WS "#include <types.h>
3322$ IF Has_Socketshr
3323$ THEN
3324$ WS "#include <socketshr.h>"
3325$ ELSE
3326$ WS "#include <time.h>
3327$ WS "#include <socket.h>
3328$ ENDIF
3329$ WS "int main()
3330$ WS "{"
3331$ WS "char name[100];
3332$ WS "int bar, baz;
3333$ WS "bar = 100;
3334$ WS "baz = gethostname(name, bar);
3335$ WS "exit(0);
3336$ WS "}"
3337$ CS
3338$ GOSUB link_ok
3339$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
3340$ THEN
3341$ d_gethname="define"
3342$ echo4 "gethostname() found."
3343$ ELSE
3344$ d_gethname="undef"
3345$ ENDIF
3346$ ELSE
3347$ ! No sockets, so no gethname
3348$ d_gethname = "undef"
3349$ ENDIF
3350$!
3351$! Check for sys/file.h
3352$!
3353$ tmp = "sys/file.h"
3354$ GOSUB inhdr
3355$ i_sysfile = tmp
3356$!
3357$! Check for sys/utsname.h
3358$!
3359$ tmp = "sys/utsname.h"
3360$ GOSUB inhdr
3361$ i_sysutsname = tmp
3362$!
3363$! Check for syslog.h
3364$!
3365$ tmp = "syslog.h"
3366$ GOSUB inhdr
3367$ i_syslog = tmp
3368$!
3369$! Check for poll.h
3370$!
3371$ tmp = "poll.h"
3372$ GOSUB inhdr
3373$ i_poll = tmp
3374$!
3375$! Check for sys/uio.h
3376$!
3377$ tmp = "sys/uio.h"
3378$ GOSUB inhdr
3379$ i_sysuio = tmp
3380$!
3381$! Check for sys/mode.h
3382$!
3383$ tmp = "sys/mode.h"
3384$ GOSUB inhdr
3385$ i_sysmode = tmp
3386$!
3387$! Check for sys/access.h
3388$!
3389$ tmp = "sys/access.h"
3390$ GOSUB inhdr
3391$ i_sysaccess = tmp
3392$!
3393$! Check for sys/security.h
3394$!
3395$ tmp = "sys/security.h"
3396$ GOSUB inhdr
3397$ i_syssecrt = tmp
3398$!
3399$! Check for fcntl.h
3400$!
3401$ tmp = "fcntl.h"
3402$ GOSUB inhdr
3403$ i_fcntl = tmp
3404$!
3405$! Check for fcntl
3406$!
3407$ OS
3408$ WS "#ifdef __DECC
3409$ WS "#include <stdlib.h>
3410$ WS "#endif
3411$ WS "#include <stdio.h>
3412$ WS "#include <fcntl.h>
3413$ WS "int main()
3414$ WS "{"
3415$ WS "fcntl(1,2,3);
3416$ WS "exit(0);
3417$ WS "}"
3418$ CS
3419$ tmp = "fcntl"
3420$ GOSUB inlibc
3421$ d_fcntl = tmp
3422$!
3423$! Check for memchr
3424$!
3425$ OS
3426$ WS "#ifdef __DECC
3427$ WS "#include <stdlib.h>
3428$ WS "#endif
3429$ WS "#include <string.h>
3430$ WS "int main()
3431$ WS "{"
3432$ WS "char * place;
3433$ WS "place = memchr(""foo"", 47, 3)
3434$ WS "exit(0);
3435$ WS "}"
3436$ CS
3437$ tmp = "memchr"
3438$ GOSUB inlibc
3439$ d_memchr = tmp
3440$!
3441$! Check for strtoull
3442$!
3443$ OS
3444$ WS "#ifdef __DECC
3445$ WS "#include <stdlib.h>
3446$ WS "#endif
3447$ WS "#include <string.h>
3448$ WS "int main()
3449$ WS "{"
3450$ WS "unsigned __int64 result;
3451$ WS "result = strtoull(""123123"", NULL, 10);
3452$ WS "exit(0);
3453$ WS "}"
3454$ CS
3455$ tmp = "strtoull"
3456$ GOSUB inlibc
3457$ d_strtoull = tmp
3458$!
3459$! Check for strtouq
3460$!
3461$ OS
3462$ WS "#ifdef __DECC
3463$ WS "#include <stdlib.h>
3464$ WS "#endif
3465$ WS "#include <string.h>
3466$ WS "int main()
3467$ WS "{"
3468$ WS "unsigned __int64 result;
3469$ WS "result = strtouq(""123123"", NULL, 10);
3470$ WS "exit(0);
3471$ WS "}"
3472$ CS
3473$ tmp = "strtouq"
3474$ GOSUB inlibc
3475$ d_strtouq = tmp
3476$!
3477$! Check for strtoll
3478$!
3479$ OS
3480$ WS "#ifdef __DECC
3481$ WS "#include <stdlib.h>
3482$ WS "#endif
3483$ WS "#include <string.h>
3484$ WS "int main()
3485$ WS "{"
3486$ WS "__int64 result;
3487$ WS "result = strtoll(""123123"", NULL, 10);
3488$ WS "exit(0);
3489$ WS "}"
3490$ CS
3491$ tmp = "strtoll"
3492$ GOSUB inlibc
3493$ d_strtoll = tmp
3494$!
3495$! Check for strtold
3496$!
3497$ OS
3498$ WS "#ifdef __DECC
3499$ WS "#include <stdlib.h>
3500$ WS "#endif
3501$ WS "#include <string.h>
3502$ WS "int main()
3503$ WS "{"
3504$ WS "long double result;
3505$ WS "result = strtold(""123123"", NULL, 10);
3506$ WS "exit(0);
3507$ WS "}"
3508$ CS
3509$ tmp = "strtold"
3510$ GOSUB inlibc
3511$ d_strtold = tmp
3512$!
3513$! Check for atoll
3514$!
3515$ OS
3516$ WS "#ifdef __DECC
3517$ WS "#include <stdlib.h>
3518$ WS "#endif
3519$ WS "#include <string.h>
3520$ WS "int main()
3521$ WS "{"
3522$ WS " __int64 result;
3523$ WS "result = atoll(""123123"");
3524$ WS "exit(0);
3525$ WS "}"
3526$ CS
3527$ tmp = "atoll"
3528$ GOSUB inlibc
3529$ d_atoll = tmp
3530$!
3531$! Check for atolf
3532$!
3533$ OS
3534$ WS "#ifdef __DECC
3535$ WS "#include <stdlib.h>
3536$ WS "#endif
3537$ WS "#include <string.h>
3538$ WS "int main()
3539$ WS "{"
3540$ WS "long double
3541$ WS "result = atolf(""123123"");
3542$ WS "exit(0);
3543$ WS "}"
3544$ CS
3545$ tmp = "atolf"
3546$ GOSUB inlibc
3547$ d_atolf = tmp
3548$!
3549$! Check for access
3550$!
3551$ OS
3552$ WS "#ifdef __DECC
3553$ WS "#include <stdlib.h>
3554$ WS "#endif
3555$ WS "#include <stdio.h>
3556$ WS "int main()
3557$ WS "{"
3558$ WS "access("foo", F_OK);
3559$ WS "exit(0);
3560$ WS "}"
3561$ CS
3562$ tmp = "acess"
3563$ GOSUB inlibc
3564$ d_access = tmp
3565$!
3566$! Check for bzero
3567$!
3568$ OS
3569$ WS "#ifdef __DECC
3570$ WS "#include <stdlib.h>
3571$ WS "#endif
3572$ WS "#include <stdio.h>
3573$ WS "#include <strings.h>
3574$ WS "int main()
3575$ WS "{"
3576$ WS "char foo[10];
3577$ WS "bzero(foo, 10);
3578$ WS "exit(0);
3579$ WS "}"
3580$ CS
3581$ tmp = "bzero"
3582$ GOSUB inlibc
3583$ d_bzero = tmp
3584$!
3585$! Check for bcopy
3586$!
3587$ OS
3588$ WS "#ifdef __DECC
3589$ WS "#include <stdlib.h>
3590$ WS "#endif
3591$ WS "#include <stdio.h>
3592$ WS "#include <strings.h>
3593$ WS "int main()
3594$ WS "{"
3595$ WS "char foo[10], bar[10];
3596$ WS "bcopy(""foo"", bar, 3);
3597$ WS "exit(0);
3598$ WS "}"
3599$ CS
3600$ tmp = "bcopy"
3601$ GOSUB inlibc
3602$ d_bcopy = tmp
3603$!
3604$! Check for mkstemp
3605$!
3606$ OS
3607$ WS "#ifdef __DECC
3608$ WS "#include <stdlib.h>
3609$ WS "#endif
3610$ WS "#include <stdio.h>
3611$ WS "int main()
3612$ WS "{"
3613$ WS "mkstemp(""foo"");
3614$ WS "exit(0);
3615$ WS "}"
3616$ CS
3617$ tmp = "mkstemp"
3618$ GOSUB inlibc
3619$ d_mkstemp = tmp
3620$!
3621$! Check for mkstemps
3622$!
3623$ OS
3624$ WS "#ifdef __DECC
3625$ WS "#include <stdlib.h>
3626$ WS "#endif
3627$ WS "#include <stdio.h>
3628$ WS "int main()
3629$ WS "{"
3630$ WS "mkstemps(""foo"", 1);
3631$ WS "exit(0);
3632$ WS "}"
3633$ CS
3634$ tmp = "mkstemps"
3635$ GOSUB inlibc
3636$ d_mkstemps = tmp
3637$!
3638$! Check for iconv
3639$!
3640$ OS
3641$ WS "#ifdef __DECC
3642$ WS "#include <stdlib.h>
3643$ WS "#endif
3644$ WS "#include <stdio.h>
3645$ WS "#include <iconv.h>
3646$ WS "int main()
3647$ WS "{"
3648$ WS " iconv_t cd = (iconv_t)0;"
3649$ WS " char *inbuf, *outbuf;"
3650$ WS " size_t inleft, outleft;"
3651$ WS " iconv(cd, &inbuf, &inleft, &outbuf, &outleft);"
3652$ WS "exit(0);
3653$ WS "}"
3654$ CS
3655$ GOSUB link_ok
3656$ IF compile_status .ne. good_compile
3657$ THEN
3658$ d_iconv="undef"
3659$ i_iconv="undef"
3660$ ELSE
3661$ IF link_status .ne. good_link
3662$ THEN
3663$ d_iconv="undef"
3664$ i_iconv="undef"
3665$ ELSE
3666$ d_iconv="define"
3667$ i_iconv="define"
3668$ ENDIF
3669$ ENDIF
3670$ IF i_iconv .eqs. "define"
3671$ THEN echo4 "<iconv.h> found."
3672$ ELSE echo4 "<iconv.h> NOT found."
3673$ ENDIF
3674$!
3675$! Check for mkdtemp
3676$!
3677$ OS
3678$ WS "#ifdef __DECC
3679$ WS "#include <stdlib.h>
3680$ WS "#endif
3681$ WS "#include <stdio.h>
3682$ WS "int main()
3683$ WS "{"
3684$ WS "mkdtemp(""foo"");
3685$ WS "exit(0);
3686$ WS "}"
3687$ CS
3688$ tmp = "mkdtemp"
3689$ GOSUB inlibc
3690$ d_mkdtemp = tmp
3691$!
3692$! Check for setvbuf
3693$!
3694$ OS
3695$ WS "#ifdef __DECC
3696$ WS "#include <stdlib.h>
3697$ WS "#endif
3698$ WS "#include <stdio.h>
3699$ WS "int main()
3700$ WS "{"
3701$ WS "FILE *foo;
3702$ WS "char Buffer[99];
3703$ WS "foo = fopen(""foo"", ""r"");
3704$ WS "setvbuf(foo, Buffer, 0, 0);
3705$ WS "exit(0);
3706$ WS "}"
3707$ CS
3708$ tmp = "setvbuf"
3709$ GOSUB inlibc
3710$ d_setvbuf = tmp
3711$!
3712$! Check for setenv
3713$!
3714$ OS
3715$ WS "#ifdef __DECC
3716$ WS "#include <stdlib.h>
3717$ WS "#endif
3718$ WS "#include <stdio.h>
3719$ WS "int main()
3720$ WS "{"
3721$ WS "setenv(""FOO"", ""BAR"", 0);
3722$ WS "exit(0);
3723$ WS "}"
3724$ CS
3725$ tmp = "setenv"
3726$ GOSUB inlibc
3727$ d_setenv = tmp
3728$!
3729$! Check for setproctitle
3730$!
3731$ OS
3732$ WS "#ifdef __DECC
3733$ WS "#include <stdlib.h>
3734$ WS "#endif
3735$ WS "#include <stdio.h>
3736$ WS "int main()
3737$ WS "{"
3738$ WS "setproctitle(""%s"", ""FOO"");
3739$ WS "exit(0);
3740$ WS "}"
3741$ CS
3742$ tmp = "setproctitle"
3743$ GOSUB inlibc
3744$ d_setproctitle = tmp
3745$!
3746$! Check for <netinet/in.h>
3747$!
3748$ IF Has_Dec_C_Sockets .or. Has_Socketshr
3749$ THEN
3750$ tmp = "netinet/in.h"
3751$ GOSUB inhdr
3752$ i_niin = tmp
3753$ ELSE
3754$ i_niin="undef"
3755$ ENDIF
3756$!
3757$! Check for <netinet/tcp.h>
3758$!
3759$ IF Has_Dec_C_Sockets .or. Has_Socketshr
3760$ THEN
3761$ tmp = "netinet/tcp.h"
3762$ GOSUB inhdr
3763$ i_netinettcp = tmp
3764$ ELSE
3765$ i_netinettcp="undef"
3766$ ENDIF
3767$!
3768$! Check for endhostent
3769$!
3770$ IF Has_Dec_C_Sockets .or. Has_Socketshr
3771$ THEN
3772$ OS
3773$ WS "#ifdef __DECC
3774$ WS "#include <stdlib.h>
3775$ WS "#endif
3776$ WS "#include <stdio.h>
3777$ IF Has_Socketshr
3778$ THEN WS "#include <socketshr.h>"
3779$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
3780$ ENDIF
3781$ WS "int main()
3782$ WS "{"
3783$ WS "endhostent();
3784$ WS "exit(0);
3785$ WS "}"
3786$ CS
3787$ tmp = "endhostent"
3788$ GOSUB inlibc
3789$ d_endhent = tmp
3790$ ELSE
3791$ d_endhent="undef"
3792$ ENDIF
3793$!
3794$! Check for endnetent
3795$!
3796$ IF Has_Dec_C_Sockets .or. Has_Socketshr
3797$ THEN
3798$ OS
3799$ WS "#ifdef __DECC
3800$ WS "#include <stdlib.h>
3801$ WS "#endif
3802$ WS "#include <stdio.h>
3803$ IF Has_Socketshr
3804$ THEN WS "#include <socketshr.h>"
3805$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
3806$ ENDIF
3807$ WS "int main()"
3808$ WS "{"
3809$ WS "endnetent();"
3810$ WS "exit(0);"
3811$ WS "}"
3812$ CS
3813$ tmp = "endnetent"
3814$ GOSUB inlibc
3815$ d_endnent = tmp
3816$ ELSE
3817$ d_endnent="undef"
3818$ ENDIF
3819$!
3820$! Check for endprotoent
3821$!
3822$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3823$ THEN
3824$ OS
3825$ WS "#ifdef __DECC
3826$ WS "#include <stdlib.h>
3827$ WS "#endif
3828$ WS "#include <stdio.h>
3829$ IF Has_Socketshr
3830$ THEN WS "#include <socketshr.h>"
3831$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
3832$ ENDIF
3833$ WS "int main()
3834$ WS "{"
3835$ WS "endprotoent();
3836$ WS "exit(0);
3837$ WS "}"
3838$ CS
3839$ tmp = "endprotoent"
3840$ GOSUB inlibc
3841$ d_endpent = tmp
3842$ ELSE
3843$ d_endpent="undef"
3844$ ENDIF
3845$!
3846$! Check for endservent
3847$!
3848$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3849$ THEN
3850$ OS
3851$ WS "#ifdef __DECC
3852$ WS "#include <stdlib.h>
3853$ WS "#endif
3854$ WS "#include <stdio.h>
3855$ IF Has_Socketshr
3856$ THEN WS "#include <socketshr.h>"
3857$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
3858$ ENDIF
3859$ WS "int main()
3860$ WS "{"
3861$ WS "endservent();
3862$ WS "exit(0);
3863$ WS "}"
3864$ CS
3865$ tmp = "endservent"
3866$ GOSUB inlibc
3867$ d_endsent = tmp
3868$ ELSE
3869$ d_endsent="undef"
3870$ ENDIF
3871$!
3872$! Check for sethostent
3873$!
3874$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3875$ THEN
3876$ OS
3877$ WS "#ifdef __DECC
3878$ WS "#include <stdlib.h>
3879$ WS "#endif
3880$ WS "#include <stdio.h>
3881$ IF Has_Socketshr
3882$ THEN WS "#include <socketshr.h>"
3883$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
3884$ ENDIF
3885$ WS "int main()
3886$ WS "{"
3887$ WS "sethostent(1);
3888$ WS "exit(0);
3889$ WS "}"
3890$ CS
3891$ tmp = "sethostent"
3892$ GOSUB inlibc
3893$ d_sethent = tmp
3894$ ELSE
3895$ d_sethent="undef"
3896$ ENDIF
3897$!
3898$! Check for setnetent
3899$!
3900$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3901$ THEN
3902$ OS
3903$ WS "#ifdef __DECC
3904$ WS "#include <stdlib.h>
3905$ WS "#endif
3906$ WS "#include <stdio.h>
3907$ IF Has_Socketshr
3908$ THEN WS "#include <socketshr.h>"
3909$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
3910$ ENDIF
3911$ WS "int main()
3912$ WS "{"
3913$ WS "setnetent(1);
3914$ WS "exit(0);
3915$ WS "}"
3916$ CS
3917$ tmp = "setnetent"
3918$ GOSUB inlibc
3919$ d_setnent = tmp
3920$ ELSE
3921$ d_setnent="undef"
3922$ ENDIF
3923$!
3924$! Check for setprotoent
3925$!
3926$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3927$ THEN
3928$ OS
3929$ WS "#ifdef __DECC
3930$ WS "#include <stdlib.h>
3931$ WS "#endif
3932$ WS "#include <stdio.h>
3933$ IF Has_Socketshr
3934$ THEN WS "#include <socketshr.h>"
3935$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
3936$ ENDIF
3937$ WS "int main()
3938$ WS "{"
3939$ WS "setprotoent(1);
3940$ WS "exit(0);
3941$ WS "}"
3942$ CS
3943$ tmp = "setprotoent"
3944$ GOSUB inlibc
3945$ d_setpent = tmp
3946$ ELSE
3947$ d_setpent="undef"
3948$ ENDIF
3949$!
3950$! Check for setservent
3951$!
3952$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3953$ THEN
3954$ OS
3955$ WS "#ifdef __DECC
3956$ WS "#include <stdlib.h>
3957$ WS "#endif
3958$ WS "#include <stdio.h>
3959$ IF Has_Socketshr
3960$ THEN WS "#include <socketshr.h>"
3961$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
3962$ ENDIF
3963$ WS "int main()
3964$ WS "{"
3965$ WS "setservent(1);
3966$ WS "exit(0);
3967$ WS "}"
3968$ CS
3969$ tmp = "setservent"
3970$ GOSUB inlibc
3971$ d_setsent = tmp
3972$ ELSE
3973$ d_setsent="undef"
3974$ ENDIF
3975$!
3976$! Check for gethostent
3977$!
3978$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3979$ THEN
3980$ OS
3981$ WS "#ifdef __DECC
3982$ WS "#include <stdlib.h>
3983$ WS "#endif
3984$ WS "#include <stdio.h>
3985$ IF Has_Socketshr
3986$ THEN WS "#include <socketshr.h>"
3987$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
3988$ ENDIF
3989$ WS "int main()
3990$ WS "{"
3991$ WS "gethostent();
3992$ WS "exit(0);
3993$ WS "}"
3994$ CS
3995$ tmp = "gethostent"
3996$ GOSUB inlibc
3997$ d_gethent = tmp
3998$ ELSE
3999$ d_gethent="undef"
4000$ ENDIF
4001$!
4002$! Check for getnetent
4003$!
4004$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4005$ THEN
4006$ OS
4007$ WS "#ifdef __DECC
4008$ WS "#include <stdlib.h>
4009$ WS "#endif
4010$ WS "#include <stdio.h>
4011$ IF Has_Socketshr
4012$ THEN WS "#include <socketshr.h>"
4013$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
4014$ ENDIF
4015$ WS "int main()
4016$ WS "{"
4017$ WS "getnetent();
4018$ WS "exit(0);
4019$ WS "}"
4020$ CS
4021$ tmp = "getnetent"
4022$ GOSUB inlibc
4023$ d_getnent = tmp
4024$ ELSE
4025$ d_getnent="undef"
4026$ ENDIF
4027$!
4028$! Check for getprotoent
4029$!
4030$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4031$ THEN
4032$ OS
4033$ WS "#ifdef __DECC
4034$ WS "#include <stdlib.h>
4035$ WS "#endif
4036$ WS "#include <stdio.h>
4037$ IF Has_Socketshr
4038$ THEN WS "#include <socketshr.h>"
4039$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
4040$ ENDIF
4041$ WS "int main()
4042$ WS "{"
4043$ WS "getprotoent();
4044$ WS "exit(0);
4045$ WS "}"
4046$ CS
4047$ tmp = "getprotoent"
4048$ GOSUB inlibc
4049$ d_getpent = tmp
4050$ ELSE
4051$ d_getpent="undef"
4052$ ENDIF
4053$!
4054$! Check for getservent
4055$!
4056$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4057$ THEN
4058$ OS
4059$ WS "#ifdef __DECC
4060$ WS "#include <stdlib.h>
4061$ WS "#endif
4062$ WS "#include <stdio.h>
4063$ IF Has_Socketshr
4064$ THEN WS "#include <socketshr.h>"
4065$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
4066$ ENDIF
4067$ WS "int main()
4068$ WS "{"
4069$ WS "getservent();
4070$ WS "exit(0);
4071$ WS "}"
4072$ CS
4073$ tmp = "getservent"
4074$ GOSUB inlibc
4075$ d_getsent = tmp
4076$ ELSE
4077$ d_getsent="undef"
4078$ ENDIF
4079$!
4080$! Check for socklen_t
4081$!
4082$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4083$ THEN
4084$ echo4 "Checking to see if you have socklen_t..."
4085$ OS
4086$ WS "#ifdef __DECC
4087$ WS "#include <stdlib.h>
4088$ WS "#endif
4089$ WS "#include <stdio.h>
4090$ IF Has_Socketshr
4091$ THEN WS "#include <socketshr.h>"
4092$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>
4093$ ENDIF
4094$ WS "int main()
4095$ WS "{"
4096$ WS "socklen_t x = 16;
4097$ WS "exit(0);
4098$ WS "}"
4099$ CS
4100$ GOSUB link_ok
4101$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
4102$ THEN
4103$ d_socklen_t="define"
4104$ echo "You have socklen_t."
4105$ ELSE
4106$ d_socklen_t="undef"
4107$ echo "You do not have socklen_t."
4108$ ENDIF
4109$ ELSE
4110$ d_socklen_t="undef"
4111$ ENDIF
4112$!
4113$! Check for pthread_yield
4114$!
4115$ IF use_threads
4116$ THEN
4117$ OS
4118$ WS "#ifdef __DECC
4119$ WS "#include <stdlib.h>
4120$ WS "#endif
4121$ WS "#include <pthread.h>
4122$ WS "#include <stdio.h>
4123$ WS "int main()
4124$ WS "{"
4125$ WS "pthread_yield();
4126$ WS "exit(0);
4127$ WS "}"
4128$ CS
4129$ tmp = "pthread_yield"
4130$ GOSUB inlibc
4131$ d_pthread_yield = tmp
4132$ ELSE
4133$ d_pthread_yield="undef"
4134$ ENDIF
4135$!
4136$! Check for sched_yield
4137$!
4138$ IF use_threads
4139$ THEN
4140$ OS
4141$ WS "#ifdef __DECC
4142$ WS "#include <stdlib.h>
4143$ WS "#endif
4144$ WS "#include <pthread.h>
4145$ WS "#include <stdio.h>
4146$ WS "int main()
4147$ WS "{"
4148$ WS "sched_yield();
4149$ WS "exit(0);
4150$ WS "}"
4151$ CS
4152$ tmp = "sched_yield"
4153$ GOSUB inlibc
4154$ d_sched_yield = tmp
4155$ IF d_sched_yield .EQS. "define"
4156$ THEN sched_yield = "sched_yield"
4157$ ELSE sched_yield = " "
4158$ ENDIF
4159$ ELSE
4160$ d_sched_yield="undef"
4161$ sched_yield = " "
4162$ ENDIF
4163$!
4164$! Check for generic pointer size
4165$!
4166$ echo4 "Checking to see how big your pointers are..."
4167$ OS
4168$ WS "#ifdef __DECC
4169$ WS "#include <stdlib.h>
4170$ WS "#endif
4171$ WS "#include <stdio.h>
4172$ WS "int main()
4173$ WS "{"
4174$ WS "int foo;
4175$ WS "foo = sizeof(char *);
4176$ WS "printf(""%d\n"", foo);
4177$ WS "exit(0);
4178$ WS "}"
4179$ CS
4180$ tmp = "char *"
4181$ GOSUB type_size_check
4182$ ptrsize = tmp
4183$ echo "Your pointers are ''ptrsize' bytes long."
4184$!
4185$! Check for size_t size
4186$!
4187$ tmp = "size_t"
4188$ zzz = tmp
4189$ echo4 "Checking the size of ''zzz'..."
4190$ GOSUB type_size_check
4191$ sizesize = tmp
4192$ echo "Your ''zzz' size is ''sizesize' bytes."
4193$!
4194$! Check rand48 and its ilk
4195$!
4196$ echo4 "Looking for a random number function..."
4197$ OS
4198$ WS "#ifdef __DECC
4199$ WS "#include <stdlib.h>
4200$ WS "#endif
4201$ WS "#include <stdio.h>
4202$ WS "int main()
4203$ WS "{"
4204$ WS "srand48(12L);"
4205$ WS "exit(0);
4206$ WS "}"
4207$ CS
4208$ GOSUB link_ok
4209$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
4210$ THEN
4211$ drand01 = "drand48()"
4212$ randseedtype = "long int"
4213$ seedfunc = "srand48"
4214$ echo4 "Good, found drand48()."
4215$ d_drand48proto = "define"
4216$ ELSE
4217$ d_drand48proto = "undef"
4218$ drand01="random()"
4219$ randseedtype = "unsigned"
4220$ seedfunc = "srandom"
4221$ OS
4222$ WS "#ifdef __DECC
4223$ WS "#include <stdlib.h>
4224$ WS "#endif
4225$ WS "#include <stdio.h>
4226$ WS "int main()
4227$ WS "{"
4228$ WS "srandom(12);"
4229$ WS "exit(0);
4230$ WS "}"
4231$ CS
4232$ GOSUB link_ok
4233$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
4234$ THEN
4235$ echo4 "OK, found random()."
4236$ ELSE
4237$ drand01="(((float)rand())/((float)RAND_MAX))"
4238$ randseedtype = "unsigned"
4239$ seedfunc = "srand"
4240$ echo4 "Yick, looks like I have to use rand()."
4241$ ENDIF
4242$ ENDIF
4243$!
4244$! Done with compiler checks. Clean up.
4245$ IF F$SEARCH("try.c") .NES."" THEN DELETE/NOLOG/NOCONFIRM try.c;*
4246$ IF F$SEARCH("try.obj").NES."" THEN DELETE/NOLOG/NOCONFIRM try.obj;*
4247$ IF F$SEARCH("try.exe").NES."" THEN DELETE/NOLOG/NOCONFIRM try.exe;*
4248$ IF F$SEARCH("try.opt").NES."" THEN DELETE/NOLOG/NOCONFIRM try.opt;*
4249$ IF F$SEARCH("try.out").NES."" THEN DELETE/NOLOG/NOCONFIRM try.out;*
4250$ IF using_cxx
4251$ THEN
4252$ CALL Cxx_demangler_cleanup
4253$ ENDIF
4254$!
4255$! Some that are compiler or VMS version sensitive
4256$!
4257$! Gnu C stuff
4258$ IF Using_Gnu_C
4259$ THEN
4260$ d_attribut="define"
4261$ vms_cc_type="gcc"
4262$ ELSE
4263$ vms_cc_type="cc"
4264$ d_attribut="undef"
4265$ ENDIF
4266$!
4267$! Dec C >= 5.2 and VMS ver >= 7.0
4268$ IF (Using_Dec_C).AND.(F$INTEGER(Dec_C_Version).GE.50200000).AND.(vms_ver .GES. "7.0")
4269$ THEN
4270$ d_bcmp="define"
4271$ d_gettimeod="define"
4272$ d_uname="define"
4273$ d_sigaction="define"
4274$ d_truncate="define"
4275$ d_wait4="define"
4276$ d_index="define"
4277$ pidtype="pid_t"
4278$ sig_name="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ABRT USR1 USR2 SPARE18 SPARE19 CHLD CONT STOP TSTP TTIN TTOU DEBUG SPARE27 SPARE28 SPARE29 SPARE30 SPARE31 SPARE32 RTMIN RTMAX"",0"
4279$ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT"",""FPE"",""KILL"",""BUS"",""SEGV"",""SYS"","
4280$ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",""USR1"",""USR2"",""SPARE18"",""SPARE19"",""CHLD"",""CONT"",""STOP"",""TSTP"","
4281$ psnwc3="""TTIN"",""TTOU"",""DEBUG"",""SPARE27"",""SPARE28"",""SPARE29"",""SPARE30"",""SPARE31"",""SPARE32"",""RTMIN"",""RTMAX"",0"
4282$ sig_name_init = psnwc1 + psnwc2 + psnwc3
4283$ sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 64"","0"
4284$ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,64,0"
4285$! perl_sig_num_with_commas=sig_num_init
4286$ uidtype="uid_t"
4287$ d_pathconf="define"
4288$ d_fpathconf="define"
4289$ d_sysconf="define"
4290$ d_sigsetjmp="define"
4291$ ELSE
4292$ pidtype="unsigned int"
4293$ d_gettimeod="undef"
4294$ d_bcmp="undef"
4295$ d_uname="undef"
4296$ d_sigaction="undef"
4297$ d_truncate="undef"
4298$ d_wait4="undef"
4299$ d_index="undef"
4300$ sig_name="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ABRT USR1 USR2"",0"
4301$ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT"",""FPE"",""KILL"",""BUS"",""SEGV"",""SYS"","
4302$ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",""USR1"",""USR2"",0"
4303$ sig_name_init = psnwc1 + psnwc2
4304$ sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17"",0"
4305$ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,0"
4306$! perl_sig_num_with_commas=sig_num_init
4307$ uidtype="unsigned int"
4308$ d_pathconf="undef"
4309$ d_fpathconf="undef"
4310$ d_sysconf="undef"
4311$ d_sigsetjmp="undef"
4312$ ENDIF
4313$!
4314$! Dec C alone
4315$ IF Using_Dec_C
4316$ THEN
4317$ d_mbstowcs="define"
4318$ d_mbtowc="define"
4319$ d_stdiobase="define"
4320$ d_stdio_cnt_lval="define"
4321$ d_stdio_ptr_lval="define"
4322$ d_stdstdio="define"
4323$ d_wcstombs="define"
4324$ d_mblen="define"
4325$ d_mktime="define"
4326$ d_strcoll="define"
4327$ d_strxfrm="define"
4328$ d_wctomb="define"
4329$ i_locale="define"
4330$ d_locconv="define"
4331$ d_setlocale="define"
4332$ vms_cc_type="decc"
4333$ ELSE
4334$ d_mbstowcs="undef"
4335$ d_mbtowc="undef"
4336$ d_stdiobase="undef"
4337$ d_stdio_cnt_lval="undef"
4338$ d_stdio_ptr_lval="undef"
4339$ d_stdstdio="undef"
4340$ d_wcstombs="undef"
4341$ d_mblen="undef"
4342$ d_mktime="undef"
4343$ d_strcoll="undef"
4344$ d_strxfrm="undef"
4345$ d_wctomb="undef"
4346$ i_locale="undef"
4347$ d_locconv="undef"
4348$ d_setlocale="undef"
4349$ ENDIF
4350$!
4351$! Sockets?
4352$ if Has_Socketshr .OR. Has_Dec_C_Sockets
4353$ THEN
4354$ d_vms_do_sockets="define"
4355$ d_htonl="define"
4356$ d_socket="define"
4357$ d_select="define"
4358$ netdb_hlen_type="int"
4359$ netdb_host_type="char *"
4360$ netdb_name_type="char *"
4361$ netdb_net_type="long"
4362$ d_gethbyaddr="define"
4363$ d_gethbyname="define"
4364$ d_getnbyaddr="define"
4365$ d_getnbyname="define"
4366$ d_getpbynumber="define"
4367$ d_getpbyname="define"
4368$ d_getsbyport="define"
4369$ d_getsbyname="define"
4370$ d_gethostprotos="define"
4371$ d_getnetprotos="define"
4372$ d_getprotoprotos="define"
4373$ d_getservprotos="define"
4374$ IF Using_Dec_C
4375$ THEN
4376$ socksizetype="unsigned int"
4377$ ELSE
4378$ socksizetype="int *"
4379$ ENDIF
4380$ ELSE
4381$ d_vms_do_sockets="undef"
4382$ d_htonl="undef"
4383$ d_socket="undef"
4384$ d_select="undef"
4385$ netdb_hlen_type="int"
4386$ netdb_host_type="char *"
4387$ netdb_name_type="char *"
4388$ netdb_net_type="long"
4389$ d_gethbyaddr="undef"
4390$ d_gethbyname="undef"
4391$ d_getnbyaddr="undef"
4392$ d_getnbyname="undef"
4393$ d_getpbynumber="undef"
4394$ d_getpbyname="undef"
4395$ d_getsbyport="undef"
4396$ d_getsbyname="undef"
4397$ d_gethostprotos="undef"
4398$ d_getnetprotos="undef"
4399$ d_getprotoprotos="undef"
4400$ d_getservprotos="undef"
4401$ socksizetype="undef"
4402$ ENDIF
4403$! Threads
4404$ IF use_threads
4405$ THEN
4406$ usethreads="define"
4407$ d_pthreads_created_joinable="define"
4408$ if (vms_ver .GES. "7.0")
4409$ THEN
4410$ d_oldpthreads="undef"
4411$ ELSE
4412$ d_oldpthreads="define"
4413$ ENDIF
4414$ ELSE
4415$ d_oldpthreads="undef"
4416$ usethreads="undef"
4417$ d_pthreads_created_joinable="undef"
4418$ ENDIF
4419$!
4420$! new (5.005_62++) typedefs for primitives
4421$!
4422$ echo "Choosing the C types to be used for Perl's internal types..."
4423$ ivtype="long"
4424$ uvtype="unsigned long"
4425$ i8type="char"
4426$ u8type="unsigned char"
4427$ i16type="short"
4428$ u16type="unsigned short"
4429$ i32type="int"
4430$ u32type="unsigned int"
4431$ i64type="long long"
4432$ u64type="unsigned long long"
4433$ nvtype="double"
4434$!
4435$ IF use64bitint .OR. use64bitint .EQS. "define"
4436$ THEN
4437$ ivtype = "''i64type'"
4438$ uvtype = "''u64type'"
4439$ nvtype="long double"
4440$ ELSE
4441$ i64size="undef"
4442$ u64size="undef"
4443$ ENDIF
4444$!
4445$ tmp = "''ivtype'"
4446$ GOSUB type_size_check
4447$ ivsize = tmp
4448$ IF use64bitint .OR. use64bitint .EQS. "define" THEN i64size = tmp
4449$ IF ivtype .eqs. "long"
4450$ THEN longsize = tmp
4451$ ELSE
4452$ tmp = "long"
4453$ GOSUB type_size_check
4454$ longsize = tmp
4455$ ENDIF
4456$
4457$ tmp = "''uvtype'"
4458$ GOSUB type_size_check
4459$ uvsize = tmp
4460$ IF use64bitint .OR. use64bitint .EQS. "define" THEN u64size = tmp
4461$
4462$ tmp = "''i8type'"
4463$ GOSUB type_size_check
4464$ i8size = tmp
4465$
4466$ tmp = "''u8type'"
4467$ GOSUB type_size_check
4468$ u8size = tmp
4469$
4470$ tmp = "''i16type'"
4471$ GOSUB type_size_check
4472$ i16size = tmp
4473$ IF i16type .eqs. "short"
4474$ THEN shortsize = tmp
4475$ ELSE
4476$ tmp = "short"
4477$ gosub type_size_check
4478$ shortsize = tmp
4479$ ENDIF
4480$
4481$ tmp = "''u16type'"
4482$ GOSUB type_size_check
4483$ u16size = tmp
4484$
4485$ tmp = "''i32type'"
4486$ GOSUB type_size_check
4487$ i32size = tmp
4488$ IF i32type .eqs. "int"
4489$ THEN intsize = tmp
4490$ ELSE
4491$ tmp = "int"
4492$ gosub type_size_check
4493$ intsize = tmp
4494$ ENDIF
4495$
4496$ tmp = "''u32type'"
4497$ gosub type_size_check
4498$ u32size = tmp
4499$
4500$ tmp = "''nvtype'"
4501$ GOSUB type_size_check
4502$ nvsize = tmp
4503$!
4504$ echo "(IV will be ""''ivtype'"", ''ivsize' bytes)"
4505$ echo "(UV will be ""''uvtype'"", ''uvsize' bytes)"
4506$ echo "(NV will be ""''nvtype'"", ''nvsize' bytes)"
4507$!
4508$ echo4 "Checking whether your NVs can preserve your UVs..."
4509$ OS
4510$ WS "#ifdef __DECC
4511$ WS "#include <stdlib.h>
4512$ WS "#endif
4513$ WS "#include <stdio.h>
4514$ WS "int main() {
4515$ WS " ''uvtype' k = (''uvtype')~0, l;
4516$ WS " ''nvtype' d;
4517$ WS " l = k;
4518$ WS " d = (''nvtype')l;
4519$ WS " l = (''uvtype')d;
4520$ WS " if (l == k)
4521$ WS " printf(""preserve\n"");
4522$ WS " exit(0);
4523$ WS "}
4524$ CS
4525$ GOSUB compile
4526$ IF tmp .EQS. "preserve"
4527$ THEN
4528$ d_nv_preserves_uv = "define"
4529$ echo "Yes, they can."
4530$ d_nv_preserves_uv_bits = F$STRING(F$INTEGER(uvsize) * 8)
4531$ ELSE
4532$ d_nv_preserves_uv = "undef"
4533$ echo "No, they can't."
4534$ echo4 "Checking how many bits of your UVs your NVs can preserve..."
4535$ OS
4536$ WS "#ifdef __DECC
4537$ WS "#include <stdlib.h>
4538$ WS "#endif
4539$ WS "#include <stdio.h>
4540$ WS "int main() {
4541$ WS " ''uvtype' u = 0;
4542$ WS " int n = 8 * ''uvsize';
4543$ WS " int i;
4544$ WS " for (i = 0; i < n; i++) {
4545$ WS " u = u << 1 | (''uvtype')1;
4546$ WS " if ((''uvtype')(''nvtype')u != u)
4547$ WS " break;
4548$ WS " }
4549$ WS " printf(""%d\n"", i);
4550$ WS " exit(0);
4551$ WS "}
4552$ GOSUB compile
4553$ d_nv_preserves_uv_bits = tmp
4554$ ENDIF
4555$ DELETE/SYMBOL tmp
4556$!
4557$ ivdformat="""ld"""
4558$ uvuformat="""lu"""
4559$ uvoformat="""lo"""
4560$ uvxformat="""lx"""
fd47df60
JH
4561$! uselongdouble?
4562$ nveformat="""e"""
4563$ nvfformat="""f"""
4564$ nvgformat="""g"""
570bb66e
JH
4565$!
4566$! Finally the composite ones. All config
4567$!
4568$ myuname="''osname' ''myname' ''osvers' ''F$EDIT(hwname, "TRIM")'"
4569$!
4570$ IF Using_Dec_C
4571$ THEN
4572$ ccflags="/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=''obj_ext'/NoList''ccflags'"
4573$ ENDIF
4574$ IF use_vmsdebug_perl
4575$ THEN
4576$ optimize="/Debug/NoOpt"
4577$ dbgprefix = "DBG"
4578$ ELSE
4579$ optimize= ""
4580$ dbgprefix = ""
4581$ ENDIF
4582$!
4583$! Okay, we've got everything configured. Now go write out a config.sh.
4584$ basename_config_sh = F$PARSE(config_sh,,,"NAME",)+F$PARSE(config_sh,,,"TYPE",)
4585$ echo4 "Creating ''basename_config_sh'..."
4586$ open/write CONFIG 'config_sh
4587$ WC := write CONFIG
4588$!
4589$! ##BEGIN WRITE NEW CONSTANTS HERE##
4590$!
4591$ WC "#!/bin/sh"
4592$ WC "#"
4593$ WC "# This file was produced by Configure.COM on a ''osname' system."
4594$ WC "#"
4595$ WC "# Package name : ''package'"
4596$ WC "# Source directory : ''src'"
4597$ WC "# Configuration time: " + cf_time
4598$ WC "# Configuration by : " + cf_by
4599$ WC "# Target system : " + myuname
4600$ WC ""
4601$ WC "CONFIG='true'"
4602$ WC "Makefile_SH='" + Makefile_SH + "'"
4603$ WC "Mcc='" + Mcc + "'"
4604$! WC "PERL_SUBVERSION='" + subversion + "'" ! VMS specific to descrip_mms.template
4605$ WC "PERL_VERSION='" + patchlevel + "'" ! VMS specific to descrip_mms.template
4606$ WC "alignbytes='" + alignbytes + "'"
4607$ WC "aphostname='" + "'"
4608$ WC "ar='" + "'"
4609$ WC "archlib='" + archlib + "'"
4610$ WC "archlibexp='" + archlibexp + "'"
4611$ WC "archname='" + archname + "'"
4612$ WC "baserev='" + baserev + "'"
4613$ WC "bin='" + bin + "'"
4614$ WC "binexp='" + binexp + "'"
4615$ WC "builddir='" + builddir + "'"
4616$ WC "byteorder='1234'"
4617$ WC "castflags='0'"
4618$ WC "cc='" + perl_cc + "'"
4619$ WC "cccdlflags='" + cccdlflags + "'"
4620$ WC "ccdlflags='" + ccdlflags + "'"
4621$ WC "ccflags='" + ccflags + "'"
4622$ WC "ccversion='" + ccversion + "'" ! VMS specific, oddly enough
4623$ WC "cf_by='" + cf_by + "'"
4624$ WC "cf_email='" + cf_email + "'"
4625$ WC "cf_time='" + cf_time + "'"
4626$ WC "config_args='" + config_args + "'"
4627$ WC "config_sh='" + config_sh + "'"
4628$ WC "cpp_stuff='" + cpp_stuff + "'"
4629$ WC "cpplast='" + cpplast + "'"
4630$ WC "cppminus='" + cppminus + "'"
4631$ WC "cpprun='" + cpprun + "'"
4632$ WC "cppstdin='" + cppstdin + "'"
4633$ WC "crosscompile='undef'"
4634$ WC "d_Gconvert='my_gconvert(x,n,t,b)'"
4635$ WC "d_PRId64='" + d_PRId64 + "'"
59a27e12
PP
4636$ WC "d_PRIEldbl='" + d_PRIEldbl_cap + "'"
4637$ WC "d_PRIFldbl='" + d_PRIFldbl_cap + "'"
4638$ WC "d_PRIGldbl='" + d_PRIGldbl_cap + "'"
4639$ WC "d_PRIX64='" + d_PRIX64_cap + "'"
4640$ WC "d_PRIeldbl='" + d_PRIeldbl + "'"
570bb66e
JH
4641$ WC "d_PRIfldbl='" + d_PRIfldbl + "'"
4642$ WC "d_PRIgldbl='" + d_PRIgldbl + "'"
4643$ WC "d_PRIo64='" + d_PRIo64 + "'"
4644$ WC "d_PRIu64='" + d_PRIu64 + "'"
4645$ WC "d_PRIx64='" + d_PRIx64 + "'"
b5ddfb46 4646$ WC "d_SCNfldbl='" + d_SCNfldbl + "'"
570bb66e
JH
4647$ WC "d_access='" + d_access + "'"
4648$ WC "d_accessx='undef'"
4649$ WC "d_alarm='define'"
4650$ WC "d_archlib='define'"
4651$ WC "d_atolf='" + d_atolf + "'"
4652$ WC "d_atoll='" + d_atoll + "'"
4653$ WC "d_attribut='" + d_attribut + "'"
4654$ WC "d_bcmp='" + d_bcmp + "'"
4655$ WC "d_bcopy='" + d_bcopy + "'"
4656$ WC "d_bincompat3='undef'"
4657$ WC "d_bincompat5005='undef'"
4658$ WC "d_bsdgetpgrp='undef'"
4659$! WC "d_bsdpgrp='undef'"
4660$ WC "d_bsdsetpgrp='undef'"
4661$ WC "d_bzero='" + d_bzero + "'"
4662$ WC "d_casti32='define'"
4663$ WC "d_castneg='define'"
4664$ WC "d_charvspr='undef'"
4665$ WC "d_chown='define'"
4666$ WC "d_chroot='undef'"
4667$ WC "d_chsize='undef'"
4668$ WC "d_cmsghdr_s='undef'"
4669$ WC "d_const='define'"
4670$ WC "d_crypt='define'"
4671$ WC "d_csh='undef'"
4672$ WC "d_cuserid='define'"
4673$ WC "d_dbl_dig='define'"
4674$ WC "d_difftime='define'"
4675$ WC "d_dirnamlen='define'"
4676$ WC "d_dlerror='undef'"
4677$ WC "d_dlsymun='undef'"
4678$ WC "d_dosuid='undef'"
4679$ WC "d_drand48proto='" + d_drand48proto + "'"
4680$ WC "d_dup2='define'"
4681$ WC "d_eaccess='undef'"
4682$ WC "d_endgrent='define'"
4683$ WC "d_endhent='" + d_endhent + "'"
4684$ WC "d_endnent='" + d_endnent + "'"
4685$ WC "d_endpent='" + d_endpent + "'"
4686$ WC "d_endpwent='define'"
4687$ WC "d_endsent='" + d_endsent + "'"
4688$ WC "d_eofnblk='undef'"
4689$ WC "d_eunice='undef'"
4690$ WC "d_fchmod='undef'"
4691$ WC "d_fchown='undef'"
4692$ WC "d_fcntl='" + d_fcntl + "'"
4693$ WC "d_fd_set='" + d_fd_set + "'"
4694$ WC "d_fgetpos='define'"
4695$ WC "d_flexfnam='define'"
4696$ WC "d_flock='undef'"
4697$ WC "d_fork='undef'"
4698$ WC "d_fpathconf='" + d_fpathconf + "'"
4699$ WC "d_fpos64_t='" + d_fpos64_t + "'"
4700$ WC "d_frexpl='" + d_frexpl + "'"
4701$ WC "d_fs_data_s='undef'"
4702$ WC "d_fseeko='undef'"
4703$ WC "d_fsetpos='define'"
4704$ WC "d_fstatfs='undef'"
4705$ WC "d_fstatvfs='undef'"
4706$ WC "d_ftello='undef'"
4707$ WC "d_getcwd='undef'"
4708$ WC "d_getespwnam='undef'"
4709$ WC "d_getfsstat='undef'"
4710$ WC "d_getgrent='define'"
4711$ WC "d_getgrps='undef'"
4712$ WC "d_gethbyaddr='" + d_gethbyaddr + "'"
4713$ WC "d_gethbyname='" + d_gethbyname + "'"
4714$ WC "d_gethent='" + d_gethent + "'"
4715$ WC "d_gethname='" + d_gethname + "'"
4716$ WC "d_gethostprotos='" + d_gethostprotos + "'"
4717$ WC "d_getlogin='define'"
4718$ WC "d_getmnt='undef'"
4719$ WC "d_getmntent='undef'"
4720$ WC "d_getnbyaddr='" + d_getnbyaddr + "'"
4721$ WC "d_getnbyname='" + d_getnbyname + "'"
4722$ WC "d_getnent='" + d_getnent + "'"
4723$ WC "d_getnetprotos='" + d_getnetprotos + "'"
4724$ WC "d_getpbyname='" + d_getpbyname + "'"
4725$ WC "d_getpbynumber='" + d_getpbynumber + "'"
4726$ WC "d_getpent='" + d_getpent + "'"
4727$ WC "d_getpgid='undef'"
4728$ WC "d_getpgrp2='undef'"
4729$ WC "d_getpgrp='undef'"
4730$ WC "d_getppid='undef'"
4731$ WC "d_getprior='undef'"
4732$ WC "d_getprotoprotos='" + d_getprotoprotos + "'"
4733$ WC "d_getprpwnam='undef'"
4734$ WC "d_getpwent='define'"
4735$ WC "d_getsbyname='" + d_getsbyname + "'"
4736$ WC "d_getsbyport='" + d_getsbyport + "'"
4737$ WC "d_getsent='" + d_getsent + "'"
4738$ WC "d_getservprotos='" + d_getservprotos + "'"
4739$ WC "d_getspnam='undef'"
4740$ WC "d_gettimeod='" + d_gettimeod + "'"
4741$ WC "d_gnulibc='undef'"
4742$ WC "d_grpasswd='undef'"
4743$ WC "d_hasmntopt='undef'"
4744$ WC "d_htonl='" + d_htonl + "'"
4745$ WC "d_iconv='" + d_iconv +"'"
4746$ WC "d_index='" + d_index + "'"
4747$ WC "d_inetaton='undef'"
4748$ WC "d_int64_t='" + d_int64_t + "'"
4749$ WC "d_isascii='define'"
4750$ WC "d_isnan='define'"
4751$ WC "d_isnanl='" + d_isnanl + "'"
4752$ WC "d_killpg='undef'"
4753$ WC "d_lchown='undef'"
4754$ WC "d_ldbl_dig='define'"
4755$ WC "d_link='undef'"
4756$ WC "d_llseek='undef'"
4757$ WC "d_locconv='" + d_locconv + "'"
4758$ WC "d_lockf='undef'"
4759$ WC "d_longdbl='" + d_longdbl + "'"
4760$ WC "d_longlong='" + d_longlong + "'"
4761$ WC "d_lseekproto='define'"
4762$ WC "d_lstat='undef'"
4763$ WC "d_madvise='undef'"
4764$ WC "d_mblen='" + d_mblen + "'"
4765$ WC "d_mbstowcs='" + d_mbstowcs + "'"
4766$ WC "d_mbtowc='" + d_mbtowc + "'"
4767$ WC "d_memchr='" + d_memchr + "'"
4768$ WC "d_memcmp='define'"
4769$ WC "d_memcpy='define'"
4770$ WC "d_memmove='define'"
4771$ WC "d_memset='define'"
4772$ WC "d_mkdir='define'"
4773$ WC "d_mkdtemp='" + d_mkdtemp + "'"
4774$ WC "d_mkfifo='undef'"
4775$ WC "d_mknod='undef'"
4776$ WC "d_mkstemp='" + d_mkstemp + "'"
4777$ WC "d_mkstemps='" + d_mkstemps + "'"
4778$ WC "d_mktime='" + d_mktime + "'"
4779$ WC "d_mmap='undef'"
4780$ WC "d_modfl='" + d_modfl + "'"
4781$ WC "d_mprotect='undef'"
4782$ WC "d_msg='undef'"
4783$ WC "d_msg_ctrunc='undef'"
4784$ WC "d_msg_dontroute='undef'"
4785$ WC "d_msg_oob='undef'"
4786$ WC "d_msg_peek='undef'"
4787$ WC "d_msg_proxy='undef'"
4788$ WC "d_msghdr_s='undef'"
4789$ WC "d_msync='undef'"
4790$ WC "d_munmap='undef'"
4791$ WC "d_mymalloc='" + d_mymalloc + "'"
4792$ WC "d_nice='define'"
4793$ WC "d_nv_preserves_uv='" + d_nv_preserves_uv + "'"
4794$ WC "d_nv_preserves_uv_bits='" + d_nv_preserves_uv_bits + "'"
4795$ WC "d_off64_t='" + d_off64_t + "'"
4796$ WC "d_old_pthread_create_joinable='" + d_old_pthread_create_joinable + "'"
4797$ WC "d_oldarchlib='define'"
4798$ WC "d_oldpthreads='" + d_oldpthreads + "'"
4799$ WC "d_open3='define'"
4800$ WC "d_pathconf='" + d_pathconf + "'"
4801$ WC "d_pause='define'"
4802$ WC "d_perl_otherlibdirs='undef'"
4803$ WC "d_phostname='undef'"
4804$ WC "d_pipe='define'"
4805$ WC "d_poll='undef'"
4806$ WC "d_pthread_yield='" + d_pthread_yield + "'"
4807$ WC "d_pthreads_created_joinable='" + d_pthreads_created_joinable + "'"
4808$ WC "d_pwage='undef'"
4809$ WC "d_pwchange='undef'"
4810$ WC "d_pwclass='undef'"
4811$ WC "d_pwcomment='define'"
4812$ WC "d_pwexpire='undef'"
4813$ WC "d_pwgecos='define'"
4814$ WC "d_pwpasswd='define'"
4815$ WC "d_pwquota='undef'"
4816$ WC "d_qgcvt='undef'"
4817$ WC "d_quad='" + d_quad + "'"
4818$ WC "d_readdir='define'"
4819$ WC "d_readlink='undef'"
4820$ WC "d_readv='undef'"
4821$ WC "d_recvmsg='undef'"
4822$ WC "d_rename='define'"
4823$ WC "d_rewinddir='define'"
4824$ WC "d_rmdir='define'"
4825$ WC "d_safebcpy='undef'"
4826$ WC "d_safemcpy='define'"
4827$ WC "d_sanemcmp='define'"
4828$ WC "d_sched_yield='" + d_sched_yield + "'"
4829$ WC "d_scm_rights='undef'"
4830$ WC "d_seekdir='define'"
4831$ WC "d_select='" + d_select + "'"
4832$ WC "d_sem='undef'"
4833$ WC "d_semctl_semid_ds='undef'"
4834$ WC "d_semctl_semun='undef'"
4835$ WC "d_sendmsg='undef'"
4836$ WC "d_setegid='undef'"
4837$ WC "d_setenv='" + d_setenv + "'"
4838$ WC "d_seteuid='undef'"
4839$ WC "d_setgrent='undef'"
4840$ WC "d_setgrps='undef'"
4841$ WC "d_sethent='" + d_sethent + "'"
4842$ WC "d_setlinebuf='undef'"
4843$ WC "d_setlocale='" + d_setlocale + "'"
4844$ WC "d_setnent='" + d_setnent + "'"
4845$ WC "d_setpent='" + d_setpent + "'"
4846$ WC "d_setpgid='undef'"
4847$ WC "d_setpgrp2='undef'"
4848$ WC "d_setpgrp='undef'"
4849$ WC "d_setprior='undef'"
4850$ WC "d_setproctitle='" + d_setproctitle + "'"
4851$ WC "d_setpwent='define'"
4852$ WC "d_setregid='undef'"
4853$ WC "d_setresgid='undef'"
4854$ WC "d_setresuid='undef'"
4855$ WC "d_setreuid='undef'"
4856$ WC "d_setrgid='undef'"
4857$ WC "d_setruid='undef'"
4858$ WC "d_setsent='" + d_setsent + "'"
4859$ WC "d_setsid='undef'"
4860$ WC "d_setvbuf='" + d_setvbuf + "'"
4861$ WC "d_sfio='undef'"
4862$ WC "d_shm='undef'"
4863$ WC "d_shmatprototype='undef'"
4864$ WC "d_sigaction='" + d_sigaction + "'"
4865$ WC "d_sigsetjmp='" + d_sigsetjmp + "'"
4866$ WC "d_socket='" + d_socket + "'"
4867$ WC "d_socklen_t='" + d_socklen_t + "'"
4868$ WC "d_sockpair='undef'"
1b9c9cf5 4869$ WC "d_socks5_init='undef'"
570bb66e
JH
4870$ WC "d_sqrtl='define'"
4871$ WC "d_statblks='undef'"
4872$ WC "d_statfs_f_flags='undef'"
4873$ WC "d_statfs_s='undef'"
4874$ WC "d_statfsflags='undef'"
4875$ WC "d_stdio_cnt_lval='" + d_stdio_cnt_lval + "'"
4876$ WC "d_stdio_ptr_lval='" + d_stdio_ptr_lval + "'"
4877$ WC "d_stdio_stream_array='undef'"
4878$ WC "d_stdiobase='" + d_stdiobase + "'"
4879$ WC "d_stdstdio='" + d_stdstdio + "'"
4880$ WC "d_strchr='define'"
4881$ WC "d_strcoll='" + d_strcoll + "'"
4882$ WC "d_strctcpy='define'"
4883$ WC "d_strerrm='strerror((e),vaxc$errno)'"
4884$ WC "d_strerror='define'"
4885$ WC "d_strtod='define'"
4886$ WC "d_strtol='define'"
4887$ WC "d_strtold='" + d_strtold + "'"
4888$ WC "d_strtoll='" + d_strtoll + "'"
4889$ WC "d_strtoul='define'"
4890$ WC "d_strtoull='" + d_strtoull + "'"
4891$ WC "d_strtouq='" + d_strtouq + "'"
4892$ WC "d_strxfrm='" + d_strxfrm + "'"
4893$ WC "d_suidsafe='undef'"
4894$ WC "d_symlink='undef'"
4895$ WC "d_syscall='undef'"
4896$ WC "d_sysconf='" + d_sysconf + "'"
4897$ WC "d_syserrlst='undef'"
4898$ WC "d_system='define'"
4899$ WC "d_tcgetpgrp='undef'"
4900$ WC "d_tcsetpgrp='undef'"
4901$ WC "d_telldir='define'"
4902$ WC "d_telldirproto='define'"
4903$ WC "d_times='define'"
4904$ WC "d_truncate='" + d_truncate + "'"
4905$ WC "d_tzname='undef'"
4906$ WC "d_umask='define'"
4907$ WC "d_uname='" + d_uname + "'"
4908$ WC "d_union_semun='undef'"
4909$ WC "d_unlink_all_versions='undef'"
4910$ WC "d_ustat='undef'"
4911$ WC "d_vendorarch='undef'"
4912$ WC "d_vendorlib='undef'"
4913$ WC "d_vfork='define'"
4914$ WC "d_vms_case_sensitive_symbols='" + d_vms_be_case_sensitive + "'" ! VMS
4915$ WC "d_vms_do_sockets='" + d_vms_do_sockets + "'" ! VMS
4916$ WC "d_void_closedir='define'"
4917$ WC "d_volatile='define'"
4918$ WC "d_vprintf='define'"
4919$ WC "d_wait4='" + d_wait4 + "'"
4920$ WC "d_waitpid='define'"
4921$ WC "d_wcstombs='" + d_wcstombs + "'"
4922$ WC "d_wctomb='" + d_wctomb + "'"
4923$ WC "d_writev='undef'"
4924$ WC "db_hashtype=' '"
4925$ WC "db_prefixtype=' '"
4926$ WC "dbgprefix='" + dbgprefix + "'"
4927$ WC "defvoidused='15'"
4928$ WC "devtype='" + devtype + "'"
4929$ WC "direntrytype='struct dirent'"
4930$ WC "dlext='" + dlext + "'"
4931$ WC "dlobj='" + dlobj + "'"
4932$ WC "dlsrc='dl_vms.c'"
4933$ WC "doublesize='" + doublesize + "'"
4934$ WC "drand01='" + drand01 + "'"
4935$ WC "dynamic_ext='" + extensions + "'"
4936$ WC "eagain=' '"
4937$ WC "ebcdic='undef'"
4938$ WC "eunicefix=':'"
4939$ WC "exe_ext='" + exe_ext + "'"
4940$ WC "extensions='" + extensions + "'"
4941$ WC "fflushNULL='define'"
4942$ WC "fflushall='undef'"
4943$ WC "fpostype='fpos_t'"
4944$ WC "freetype='void'"
4945$ WC "full_ar='" + "'"
4946$ WC "full_csh='" + " '"
4947$ WC "full_sed='_NLA0:'"
4948$ WC "gccversion='" + gccversion + "'"
4949$ WC "gidformat='lu'"
4950$ WC "gidsign='1'"
4951$ WC "gidsize='4'"
4952$ WC "gidtype='" + gidtype + "'"
4953$ WC "groupstype='Gid_t'"
4954$ WC "hint='none'"
4955$ WC "hintfile='" + "'"
4956$ WC "i16size='" + i16size + "'"
4957$ WC "i16type='" + i16type + "'"
4958$ WC "i32size='" + i32size + "'"
4959$ WC "i32type='" + i32type + "'"
4960$ WC "i64size='" + i64size + "'"
4961$ WC "i64type='" + i64type + "'"
4962$ WC "i8size='" + i8size + "'"
4963$ WC "i8type='" + i8type + "'"
4964$ WC "i_arpainet='undef'"
4965$ WC "i_dbm='undef'"
4966$ WC "i_dirent='undef'"
4967$ WC "i_dlfcn='undef'"
4968$ WC "i_fcntl='" + i_fcntl + "'"
4969$ WC "i_float='define'"
4970$ WC "i_grp='undef'"
4971$ WC "i_iconv='" + i_iconv +"'"
4972$ WC "i_ieeefp='undef'"
4973$ WC "i_inttypes='" + i_inttypes + "'"
4974$ WC "i_libutil='" + i_libutil + "'"
4975$ WC "i_limits='define'"
4976$ WC "i_locale='" + i_locale + "'"
4977$ WC "i_machcthr='undef'"
4978$ WC "i_machcthreads='undef'"
4979$ WC "i_math='define'"
4980$ WC "i_memory='undef'"
4981$ WC "i_mntent='undef'"
4982$ WC "i_ndbm='undef'"
4983$ WC "i_netdb='" + i_netdb + "'"
4984$ WC "i_neterrno='define'"
4985$ WC "i_netinettcp='" + i_netinettcp + "'"
4986$ WC "i_niin='" + i_niin + "'"
4987$ WC "i_poll='" + i_poll + "'"
4988$ WC "i_prot='undef'"
4989$ WC "i_pthread='define'"
4990$ WC "i_pwd='undef'"
4991$ WC "i_rpcsvcdbm='undef'"
4992$ WC "i_sfio='undef'"
4993$ WC "i_sgtty='undef'"
4994$ WC "i_shadow='" + i_shadow + "'"
4995$ WC "i_socks='" + i_socks + "'"
4996$ WC "i_stdarg='define'"
4997$ WC "i_stddef='define'"
4998$ WC "i_stdlib='define'"
4999$ WC "i_string='define'"
5000$ WC "i_sunmath='undef'"
5001$ WC "i_sysaccess='" + i_sysaccess + "'"
5002$ WC "i_sysdir='undef'"
5003$ WC "i_sysfile='" + i_sysfile + "'"
5004$ WC "i_sysioctl='undef'"
5005$ WC "i_syslog='" + i_syslog + "'"
5006$ WC "i_sysmman='undef'"
5007$ WC "i_sysmode='" + i_sysmode + "'"
5008$ WC "i_sysmount='undef'"
5009$ WC "i_sysndir='undef'"
5010$ WC "i_sysparam='undef'"
5011$ WC "i_sysresrc='undef'"
5012$ WC "i_syssecrt='" + i_syssecrt + "'"
5013$ WC "i_sysselct='undef'"
5014$ WC "i_sysstat='define'"
5015$ WC "i_sysstatfs='undef'"
5016$ WC "i_sysstatvfs='undef'"
5017$ WC "i_systime='undef'"
5018$ WC "i_systimek='undef'"
5019$ WC "i_systimes='undef'"
5020$ WC "i_systypes='define'"
5021$ WC "i_sysuio='" + i_sysuio + "'"
5022$ WC "i_sysun='undef'"
5023$ WC "i_sysutsname='" + i_sysutsname + "'"
5024$ WC "i_sysvfs='undef'"
5025$ WC "i_syswait='undef'"
5026$ WC "i_termio='undef'"
5027$ WC "i_termios='undef'"
5028$ WC "i_time='define'"
5029$ WC "i_unistd='" + i_unistd + "'"
5030$ WC "i_ustat='undef'"
5031$ WC "i_utime='undef'"
5032$ WC "i_values='undef'"
5033$ WC "i_varargs='undef'"
5034$ WC "i_vfork='undef'"
5035$ WC "inc_version_list='0'"
5036$ WC "inc_version_list_init='0'"
5037$ WC "installarchlib='" + installarchlib + "'"
5038$ WC "installbin='" + installbin + "'"
5039$ WC "installman1dir='" + installman1dir + "'"
5040$ WC "installman3dir='" + installman3dir + "'"
5041$ WC "installprivlib='" + installprivlib + "'"
5042$ WC "installscript='" + installscript + "'"
5043$ WC "installsitearch='" + installsitearch + "'"
5044$ WC "installsitelib='" + installsitelib + "'"
5045$ WC "installusrbinperl='undef'"
5046$ WC "intsize='" + intsize + "'"
5047$ WC "ivdformat='" + ivdformat + "'"
5048$ WC "ivsize='" + ivsize + "'"
5049$ WC "ivtype='" + ivtype + "'"
5050$ WC "known_extensions='" + known_extensions + "'"
5051$ WC "ld='" + ld + "'"
5052$ WC "lddlflags='/Share'"
5053$ WC "ldflags='/NoTrace/NoMap'"
5054$ WC "lib_ext='" + lib_ext + "'"
5055$ WC "libc='" + libc + "'"
5056$ WC "libpth='/sys$share /sys$library'"
5057$ WC "libs='" + libs + "'"
5058$ WC "longdblsize='" + longdblsize + "'"
5059$ WC "longlongsize='" + longlongsize + "'"
5060$ WC "longsize='" + longsize + "'"
5061$ WC "lseeksize='4'"
5062$ WC "lseektype='int'"
5063$ WC "mab='" + "'"
5064$ WC "make='" + make + "'"
5065$ WC "malloctype='void *'"
5066$ WC "man1ext='rno'"
5067$ WC "man3ext='rno'"
59a27e12 5068$ WC "mmaptype=' " + "'"
570bb66e
JH
5069$ WC "modetype='unsigned int'"
5070$ WC "multiarch='undef'"
5071$ WC "mydomain='" + mydomain + "'"
5072$ WC "myhostname='" + myhostname + "'"
5073$ WC "myuname='" + myuname + "'"
5074$ WC "netdb_hlen_type='" + netdb_hlen_type + "'"
5075$ WC "netdb_host_type='" + netdb_host_type + "'"
5076$ WC "netdb_name_type='" + netdb_name_type + "'"
5077$ WC "netdb_net_type='" + netdb_net_type + "'"
fd47df60
JH
5078$ WC "nveformat='" + nveformat + "'"
5079$ WC "nvfformat='" + nvfformat + "'"
5080$ WC "nvgformat='" + nvgformat + "'"
570bb66e
JH
5081$ WC "nvsize='" + nvsize + "'"
5082$ WC "nvtype='" + nvtype + "'"
5083$ WC "o_nonblock=' '"
5084$ WC "obj_ext='" + obj_ext + "'"
5085$ WC "old_pthread_create_joinable='" + old_pthread_create_joinable + "'"
5086$ WC "oldarchlib='" + oldarchlib + "'"
5087$ WC "oldarchlibexp='" + oldarchlibexp + "'"
5088$ WC "optimize='" + optimize + "'"
5089$ WC "osname='" + osname + "'"
5090$ WC "osvers='" + osvers + "'"
5091$ WC "otherlibdirs='" + "'"
5092$ WC "package='" + package + "'"
5093$ WC "pager='" + pager + "'"
5094$ WC "patchlevel='" + patchlevel + "'"
5095$ WC "path_sep='|'"
5096$ WC "perl_root='" + perl_root + "'" ! VMS specific $trnlnm()
5097$ WC "perladmin='" + perladmin + "'"
5098$ WC "pgflquota='" + pgflquota + "'"
5099$ WC "pidtype='" + pidtype + "'"
5100$ WC "pm_apiversion='" + version + "'"
5101$! WC "prefix='" + vms_prefix + "'"
5102$ WC "prefix='" + prefix + "'"
5103$ WC "privlib='" + privlib + "'"
5104$ WC "privlibexp='" + privlibexp + "'"
5105$ WC "prototype='define'"
5106$ WC "ptrsize='" + ptrsize + "'"
5107$ WC "quadkind='" + quadkind + "'"
5108$ WC "quadtype='" + quadtype + "'"
5109$ WC "randbits='31'"
5110$ WC "randseedtype='" + randseedtype + "'"
5111$ WC "ranlib='" + "'"
5112$ WC "rd_nodata=' '"
5113$ WC "revision='" + revision + "'"
570bb66e 5114$ WC "sPRId64='" + sPRId64 + "'"
59a27e12
PP
5115$ WC "sPRIEldbl='" + sPRIEldbl_cap + "'"
5116$ WC "sPRIFldbl='" + sPRIFldbl_cap + "'"
5117$ WC "sPRIGldbl='" + sPRIGldbl_cap + "'"
5118$ WC "sPRIX64='" + sPRIX64_cap + "'"
5119$ WC "sPRIeldbl='" + sPRIeldbl + "'"
570bb66e
JH
5120$ WC "sPRIfldbl='" + sPRIfldbl + "'"
5121$ WC "sPRIgldbl='" + sPRIgldbl + "'"
5122$! WC "sPRIi64='" + sPRIi64 + "'"
5123$ WC "sPRIo64='" + sPRIo64 + "'"
5124$ WC "sPRIu64='" + sPRIu64 + "'"
5125$ WC "sPRIx64='" + sPRIx64 + "'"
b5ddfb46 5126$ WC "sSCNfldbl='" + sSCNfldbl + "'"
570bb66e
JH
5127$ WC "sched_yield='" + sched_yield + "'"
5128$ WC "seedfunc='" + seedfunc + "'"
5129$ WC "selectminbits='32'"
5130$ WC "selecttype='" + selecttype + "'"
5131$ WC "sh='MCR'"
5132$ WC "shmattype='" + "'"
5133$ WC "shortsize='" + shortsize + "'"
5134$ WC "shrplib='define'"
5135$ WC "sig_name='" + sig_name + "'"
5136$ tmp = "sig_name_init='" + sig_name_init + "'"
5137$ WC/symbol tmp
5138$ DELETE/SYMBOL tmp
5139$ WC "sig_num='" + sig_num + "'"
5140$ WC "sig_num_init='" + sig_num_init + "'"
5141$ WC "signal_t='" + signal_t + "'"
5142$ WC "sitearch='" + sitearch + "'"
5143$ WC "sitearchexp='" + sitearchexp + "'"
5144$ WC "sitelib='" + sitelib + "'"
5145$ WC "sitelib_stem='" + sitelib_stem + "'"
5146$ WC "sitelibexp='" + sitelibexp + "'"
5147$ WC "sizesize='" + sizesize + "'"
5148$ WC "sizetype='size_t'"
5149$ WC "so='" + so + "'"
5150$ WC "socksizetype='" + socksizetype + "'"
5151$ WC "spitshell='write sys$output '"
5152$ WC "src='" + src + "'"
5153$ WC "ssizetype='int'"
5154$ WC "startperl=" + startperl ! This one's special--no enclosing single quotes
5155$ WC "static_ext='" + "'"
5156$ WC "stdchar='" + stdchar + "'"
5157$ WC "stdio_base='((*fp)->_base)'"
5158$ WC "stdio_bufsiz='((*fp)->_cnt + (*fp)->_ptr - (*fp)->_base)'"
5159$ WC "stdio_cnt='((*fp)->_cnt)'"
5160$ WC "stdio_ptr='((*fp)->_ptr)'"
59a27e12 5161$ WC "stdio_stream_array=' " + "'"
570bb66e
JH
5162$ WC "subversion='" + subversion + "'"
5163$ WC "timetype='" + timetype + "'"
5164$ WC "u16size='" + u16size + "'"
5165$ WC "u16type='" + u16type + "'"
5166$ WC "u32size='" + u32size + "'"
5167$ WC "u32type='" + u32type + "'"
5168$ WC "u64size='" + u64size + "'"
5169$ WC "u64type='" + u64type + "'"
5170$ WC "u8size='" + u8size + "'"
5171$ WC "u8type='" + u8type + "'"
5172$ WC "uidformat='lu'"
5173$ WC "uidsign='1'"
5174$ WC "uidsize='4'"
5175$ WC "uidtype='" + uidtype + "'"
5176$ WC "uquadtype='" + uquadtype + "'"
5177$ WC "use5005threads='" + use5005threads + "'"
5178$ WC "use64bitall='" + use64bitall + "'"
5179$ WC "use64bitint='" + use64bitint + "'"
5180$ WC "usedl='" + usedl + "'"
5181$ WC "useithreads='" + useithreads + "'"
5182$ WC "uselargefiles='" + uselargefiles + "'"
5183$ WC "uselongdouble='" + uselongdouble + "'"
5184$ WC "usemorebits='" + usemorebits + "'"
5185$ WC "usemultiplicity='" + usemultiplicity + "'"
5186$ WC "usemymalloc='" + usemymalloc + "'"
5187$ WC "useperlio='undef'"
5188$ WC "useposix='false'"
5189$ WC "usesocks='undef'"
5190$ WC "usethreads='" + usethreads + "'"
5191$ WC "usevfork='true'"
5192$ WC "uvoformat='" + uvoformat + "'"
5193$ WC "uvsize='" + uvsize + "'"
5194$ WC "uvtype='" + uvtype + "'"
5195$ WC "uvuformat='" + uvuformat + "'"
5196$ WC "uvxformat='" + uvxformat + "'"
5197$ WC "vendorarchexp='" + "'"
5198$ WC "vendorlib_stem='" + "'"
5199$ WC "vendorlibexp='" + "'"
5200$ WC "version='" + version + "'"
5201$ WC "vms_cc_type='" + vms_cc_type + "'" ! VMS specific
5202$ WC "vms_prefix='" + vms_prefix + "'" ! VMS specific
5203$ WC "vms_ver='" + vms_ver + "'" ! VMS specific
5204$ WC "voidflags='15'"
5205$ WC "xs_apiversion='" + version + "'"
5206$ WC "CONFIGDOTSH='true'"
5207$!
5208$! ##END WRITE NEW CONSTANTS HERE##
5209$!
5210$ CLOSE CONFIG
5211$!
5212$! Okay, we've gotten here. Build munchconfig.exe
5213$ COPY/NOLOG [-.vms]munchconfig.c []
5214$ COPY/NOLOG [-.vms]'Makefile_SH []
5215$ 'Perl_CC' munchconfig.c
5216$ IF Needs_Opt
5217$ THEN
5218$ OPEN/WRITE CONFIG []munchconfig.opt
5219$ IF Using_Gnu_C
5220$ THEN
5221$ WRITE CONFIG "Gnu_CC:[000000]gcclib.olb/library"
5222$ ENDIF
5223$ WRITE CONFIG "Sys$Share:VAXCRTL/Share"
5224$ CLOSE CONFIG
5225$ 'ld' munchconfig.obj,munchconfig.opt/opt
5226$ DELETE/NOLOG/NOCONFIRM munchconfig.opt;
5227$ ELSE
5228$ 'ld' munchconfig.obj
5229$ ENDIF
5230$ IF F$SEARCH("munchconfig.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig.obj;
5231$ IF F$SEARCH("munchconfig.c") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig.c;
5232$ IF using_cxx
5233$ THEN
5234$ CALL Cxx_demangler_cleanup
5235$ ENDIF
5236$!
5237$ IF alldone .EQS. ""
5238$ THEN
5239$ cat4 SYS$INPUT:
5240
5241If you'd like to make any changes to the config.sh file before I begin
5242to configure things, answer yes to the following question.
5243
5244$ dflt="n"
a5fddd44 5245$ rp="Do you wish to edit ''basename_config_sh'? [''dflt'] "
570bb66e
JH
5246$ GOSUB myread
5247$ IF ans .EQS. "" then ans = dflt
5248$ IF ans
5249$ THEN
5250$ echo4 ""
5251$ echo4 "Be sure to type LOGOUT after you have edited the file,"
5252$ echo4 "then this procedure will resume."
5253$ echo4 ""
5254$ default = F$ENVIRONMENT("DEFAULT")
5255$ DIRECTORY 'config_sh
5256$ SET DEFAULT [-]
5257$ SPAWN/WAIT
5258$ SET DEFAULT 'default
5259$ ENDIF
5260$ ENDIF
5261$!
5262$ echo ""
5263$ echo4 "Adding ''osname' specific preprocessor commands."
5264$ !
5265$ ! we need an fdl file
5266$ CREATE [-]CONFIG.FDL
5267RECORD
5268 FORMAT STREAM_LF
5269$ CREATE /FDL=[-]CONFIG.FDL [-]CONFIG.LOCAL
5270$ ! First spit out the header info with the local defines (to get
5271$ ! around the 255 character command line limit)
5272$ OPEN/APPEND CONFIG [-]config.local
5273$ IF use_debugging_perl THEN WC "#define DEBUGGING"
5274$ IF use_two_pot_malloc THEN WC "#define TWO_POT_OPTIMIZE"
5275$ IF mymalloc THEN WC "#define EMBEDMYMALLOC"
5276$ IF use_pack_malloc THEN WC "#define PACK_MALLOC"
5277$ IF use_debugmalloc THEN WC "#define DEBUGGING_MSTATS"
5278$ IF Using_Gnu_C THEN WC "#define GNUC_ATTRIBUTE_CHECK"
5279$ IF (Has_Dec_C_Sockets)
5280$ THEN
5281$ WC "#define VMS_DO_SOCKETS"
5282$ WC "#define DECCRTL_SOCKETS"
5283$ ELSE
5284$ IF Has_Socketshr THEN WC "#define VMS_DO_SOCKETS"
5285$ ENDIF
5286$! This is VMS-specific for now
5287$ WC "#''d_setenv' HAS_SETENV"
5288$ IF d_secintgenv THEN WC "#define SECURE_INTERNAL_GETENV"
5289$ IF d_alwdeftype THEN WC "#define ALWAYS_DEFTYPES"
5290$ IF use64bitint .OR. use64bitint .EQS. "define"
5291$ THEN
5292$ WC "#define USE_64_BIT_INT"
5293$ WC "#define USE_LONG_DOUBLE"
5294$ ENDIF
5295$ IF use64bitall .OR. use64bitall .EQS. "define" THEN -
5296 WC "#define USE_64_BIT_ALL"
5297$ IF be_case_sensitive THEN WC "#define VMS_WE_ARE_CASE_SENSITIVE"
5298$ IF d_herrno .EQS. "undef" THEN WC "#define NEED_AN_H_ERRNO"
5299$ WC "#define HAS_ENVGETENV"
5300$ WC "#define PERL_EXTERNAL_GLOB"
5301$ CLOSE CONFIG
5302$!
5303$ echo4 "Doing variable substitutions on .SH files..."
5304$ echo4 "Extracting config.h (with variable substitutions)"
5305$!
5306$! Now build the normal config.h
5307$ DEFINE/USER_MODE sys$output [-]config.main
5308$ mcr []munchconfig 'config_sh [-]config_h.sh
5309$ ! Concatenate them together
5310$ copy [-]config.local,[-]config.main [-]config.h
5311$! Clean up
5312$ DELETE/NOLOG [-]CONFIG.MAIN;*
5313$ DELETE/NOLOG [-]CONFIG.LOCAL;*
5314$ DELETE/NOLOG [-]CONFIG.FDL;*
5315$!
5316$ IF Using_Dec_C
5317$ THEN
5318$ DECC_REPLACE = "DECC=decc=1"
5319$ ELSE
5320$ DECC_REPLACE = "DECC="
5321$ ENDIF
5322$ IF Using_Gnu_C
5323$ THEN
5324$ GNUC_REPLACE = "GNUC=gnuc=1"
5325$ ELSE
5326$ GNUC_REPLACE = "GNUC="
5327$ ENDIF
5328$ IF Has_Dec_C_Sockets
5329$ THEN
5330$ SOCKET_REPLACE = "SOCKET=DECC_SOCKETS=1"
5331$ ELSE
5332$ IF Has_Socketshr
5333$ THEN
5334$ SOCKET_REPLACE = "SOCKET=SOCKETSHR_SOCKETS=1"
5335$ ELSE
5336$ SOCKET_REPLACE = "SOCKET="
5337$ ENDIF
5338$ ENDIF
5339$ IF Use_Threads
5340$ THEN
5341$ IF (vms_ver .LES. "6.2")
5342$ THEN
5343$ THREAD_REPLACE = "THREAD=OLDTHREADED=1"
5344$ ELSE
5345$ THREAD_REPLACE = "THREAD=THREADED=1"
5346$ ENDIF
5347$ ELSE
5348$ THREAD_REPLACE = "THREAD="
5349$ ENDIF
5350$ IF mymalloc
5351$ THEN
5352$ MALLOC_REPLACE = "MALLOC=MALLOC=1"
5353$ ELSE
5354$ MALLOC_REPLACE = "MALLOC="
5355$ ENDIF
5356$ echo4 "Extracting ''defmakefile' (with variable substitutions)"
5357$ DEFINE/USER_MODE sys$output 'UUmakefile
5358$ mcr []munchconfig 'config_sh 'Makefile_SH "''DECC_REPLACE'" "''ARCH_TYPE'" "''GNUC_REPLACE'" "''SOCKET_REPLACE'" "''THREAD_REPLACE'" -
5359"''C_Compiler_Replace'" "''MALLOC_REPLACE'" "''Thread_Live_Dangerously'" "PV=''version'" "FLAGS=FLAGS=''extra_flags'"
5360$ echo4 "Extracting Build_Ext.Com (without variable substitutions)"
5361$ Create Sys$Disk:[-]Build_Ext.Com
5362$ Deck/Dollar="$EndOfTpl$"
5363$!++ Build_Ext.Com
5364$! NOTE: This file is extracted as part of the VMS configuration process.
5365$! Any changes made to it directly will be lost. If you need to make any
56aeb0ae 5366$! changes, please edit the template in Configure.Com instead.
570bb66e
JH
5367$ def = F$Environment("Default")
5368$ exts1 = F$Edit(p1,"Compress")
5369$ p2 = F$Edit(p2,"Upcase,Compress,Trim")
5370$ If F$Locate("MCR ",p2).eq.0 Then p2 = F$Extract(3,255,p2)
5371$ miniperl = "$" + F$Search(F$Parse(p2,".Exe"))
5372$ makeutil = p3
5373$ if f$type('p3') .nes. "" then makeutil = 'p3'
5374$ targ = F$Edit(p4,"Lowercase")
5375$ i = 0
5376$ next_ext:
5377$ ext = F$Element(i," ",p1)
5378$ If ext .eqs. " " Then Goto done
5379$ Define/User_mode Perl_Env_Tables CLISYM_LOCAL
5380$ miniperl
5381 ($extdir = $ENV{'ext'}) =~ s/::/./g;
5382 $extdir =~ s#/#.#g;
5383 if ($extdir =~ /^vms/i) { $extdir =~ s/vms/.vms.ext/i; }
5384 else { $extdir = ".ext.$extdir"; }
5385 ($ENV{'extdir'} = "[$extdir]");
5386 ($ENV{'up'} = ('-') x ($extdir =~ tr/././));
5387$ Set Default &extdir
5388$ redesc = 0
5389$ If F$Locate("clean",targ) .eqs. F$Length(targ)
5390$ Then
5391$ Write Sys$Output "Building ''ext' . . ."
5392$ On Error Then Goto done
5393$ If F$Search("Descrip.MMS") .eqs. ""
5394$ Then
5395$ redesc = 1
5396$ Else
5397$ If F$CvTime(F$File("Descrip.MMS","rdt")) .lts. -
5398 F$CvTime(F$File("Makefile.PL","rdt")) Then redesc = 1
5399$ EndIf
5400$ Else
5401$ Write Sys$Output "''targ'ing ''ext' . . ."
5402$ On Error Then Continue
5403$ EndIf
5404$ If redesc Then -
5405 miniperl "-I[''up'.lib]" Makefile.PL "INST_LIB=[''up'.lib]" "INST_ARCHLIB=[''up'.lib]"
5406$ makeutil 'targ'
5407$ i = i + 1
5408$ Set Def &def
5409$ Goto next_ext
5410$ done:
5411$ sts = $Status
5412$ Set Def &def
5413$ Exit sts
5414$!-- Build_Ext.Com
5415$EndOfTpl$
5416$!
5417$! Clean up after ourselves
5418$ DELETE/NOLOG/NOCONFIRM []munchconfig.exe;
97abc6ad 5419$!
146174a9 5420$! Warn of dangerous symbols or logical names
a4521476 5421$!
146174a9
CB
5422$Bad_environment: SUBROUTINE
5423$ Bad_env = ""
5424$ IF p2 .eqs. "SYMBOL"
5425$ THEN
5426$ IF f$type('p1) .nes. "" THEN Bad_env := SYMBOL
5427$ ELSE
5428$ IF f$trnlnm(p1) .nes. "" THEN Bad_env := LOGICAL
5429$ ENDIF
5430$ IF Bad_env .eqs. "SYMBOL" .or. Bad_env .eqs. "LOGICAL"
a4521476
PP
5431$ THEN
5432$ IF f$search("config.msg") .nes. ""
5433$ THEN
5434$ OPEN/APPEND CONFIG config.msg
5435$ ELSE
5436$ OPEN/WRITE CONFIG config.msg
5437$ ENDIF
146174a9
CB
5438$ IF Bad_env .eqs. "SYMBOL"
5439$ THEN
5440$ WRITE CONFIG ""
5441$ WRITE CONFIG "Symbol name ''p1' found in environment as " + &p1
5442$ WRITE CONFIG " delete before building ''package' via:"
5443$ WRITE CONFIG " $ DELETE/SYMBOL/GLOBAL ''p1'"
5444$ IF f$locate("""",&p1) .ge. f$length(&p1)
5445$ THEN
5446$ WRITE CONFIG " after building, testing, and installing ''package'
5447$ WRITE CONFIG " restore the symbol with:"
5448$ WRITE CONFIG " $ ''p1' == """ + &p1 + """"
5449$ ENDIF
5450$ ENDIF
5451$ IF Bad_env .eqs. "LOGICAL"
5452$ THEN
5453$ WRITE CONFIG ""
5454$ WRITE CONFIG "Logical name ''p1' found in environment as " + f$trnlnm(p1)
5455$ WRITE CONFIG " deassign before building ''package'"
5456$ ENDIF
a4521476 5457$ CLOSE CONFIG
146174a9 5458$ Bad_env = ""
a4521476
PP
5459$ ENDIF
5460$ EXIT
146174a9 5461$ ENDSUBROUTINE ! Bad_environment
a4521476 5462$ echo ""
570bb66e 5463$ echo4 "Checking for dangerous pre-existing global symbols and logical names."
146174a9
CB
5464$ CALL Bad_environment "TMP"
5465$ CALL Bad_environment "LIB"
5466$ CALL Bad_environment "T"
5467$ CALL Bad_environment "FOO"
5468$ CALL Bad_environment "EXT"
5469$ CALL Bad_environment "TEST" "SYMBOL"
a4521476
PP
5470$ IF f$search("config.msg") .eqs. "" THEN echo "OK."
5471$!
97abc6ad
HM
5472$! %Config-I-VMS, write perl_setup.com here
5473$!
86fced14
CB
5474$ IF (.NOT.perl_symbol)
5475$ THEN
5476$ file_2_find = "[-]''packageup'.cld"
5477$ echo ""
570bb66e 5478$ echo4 "The perl.cld file is now being written..."
86fced14 5479$ OPEN/WRITE CONFIG 'file_2_find'
c645ec3f 5480$ ext = ".exe"
570bb66e 5481$ IF ((sharedperl) .AND. (F$GETSYI("HW_MODEL") .GE. 1024)) THEN ext := .AXE
86fced14
CB
5482$ IF (use_vmsdebug_perl)
5483$ THEN
5484$ WRITE CONFIG "define verb dbgperl"
570bb66e 5485$ WRITE CONFIG F$FAO("!_!AS","image ''vms_prefix':[000000]dbgperl''ext'")
86fced14
CB
5486$ WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
5487$ WRITE CONFIG ""
5488$ WRITE CONFIG "define verb perl"
570bb66e 5489$ WRITE CONFIG F$FAO("!_!AS","image ''vms_prefix':[000000]ndbgPerl''ext'")
86fced14
CB
5490$ WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
5491$ ELSE
5492$ WRITE CONFIG "define verb perl"
570bb66e 5493$ WRITE CONFIG F$FAO("!_!AS","image ''vms_prefix':[000000]perl''ext'")
86fced14
CB
5494$ WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
5495$ ENDIF
5496$ CLOSE CONFIG
5497$ ENDIF ! (.NOT.perl_symbol)
97abc6ad 5498$ echo ""
570bb66e 5499$ echo4 "The perl_setup.com file is now being written..."
a3ef2c6f 5500$ file_2_find = "[-]perl_setup.com"
97abc6ad
HM
5501$ OPEN/WRITE CONFIG 'file_2_find'
5502$ WRITE CONFIG "$!"
5503$ WRITE CONFIG "$! Perl_Setup.com ''cf_time'"
5504$ IF cf_email.NES.perladmin
5505$ THEN
5506$ WRITE CONFIG "$! perl configured by ''cf_email'"
5507$ ELSE
5508$ WRITE CONFIG "$! This perl configured & administered by ''perladmin'"
5509$ ENDIF
5510$ WRITE CONFIG "$!"
3eeba6fb 5511$ prefix = prefix - "000000."
97abc6ad
HM
5512$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN -
5513 prefix = prefix - "]" + ".]"
570bb66e 5514$ WRITE CONFIG "$ define/translation=concealed ''vms_prefix' ''prefix'"
86fced14 5515$ WRITE CONFIG "$ ext = "".exe"""
570bb66e 5516$ IF sharedperl
86fced14 5517$ THEN
570bb66e 5518$ write config "$ if f$getsyi(""HW_MODEL"") .ge. 1024 then ext = "".AXE"""
86fced14
CB
5519$ ENDIF
5520$ IF (perl_symbol)
5521$ THEN
5522$ IF (use_vmsdebug_perl)
5523$ THEN
570bb66e
JH
5524$ WRITE CONFIG "$ dbgperl :== $''vms_prefix':[000000]dbgPerl'ext'"
5525$ WRITE CONFIG "$ perl :== $''vms_prefix':[000000]ndbgPerl'ext'"
5526$ WRITE CONFIG "$ define dbgPerlShr ''vms_prefix':[000000]dbgPerlShr'ext'"
86fced14 5527$ ELSE
570bb66e
JH
5528$ WRITE CONFIG "$ perl :== $''vms_prefix':[000000]Perl'ext'"
5529$ WRITE CONFIG "$ define PerlShr ''vms_prefix':[000000]PerlShr'ext'"
86fced14
CB
5530$ ENDIF
5531$ ELSE ! .NOT.perl_symbol
5532$ IF (use_vmsdebug_perl)
5533$ THEN
570bb66e 5534$ WRITE CONFIG "$ define dbgPerlShr ''vms_prefix':[000000]dbgPerlShr'ext'"
86fced14 5535$ ELSE
570bb66e 5536$ WRITE CONFIG "$ define PerlShr ''vms_prefix':[000000]PerlShr'ext'"
86fced14
CB
5537$ ENDIF
5538$ IF perl_verb .EQS. "PROCESS"
5539$ THEN
570bb66e 5540$ WRITE CONFIG "$ set command ''vms_prefix':[000000]''packageup'.CLD"
86fced14
CB
5541$ ENDIF
5542$ ENDIF ! perl_symbol
570bb66e
JH
5543$ WRITE CONFIG "$ define/nolog pod2text ''vms_prefix':[lib.pod]pod2text.com"
5544$ WRITE CONFIG "$ define/nolog pod2html ''vms_prefix':[lib.pod]pod2html.com"
5545$ WRITE CONFIG "$ define/nolog pod2man ''vms_prefix':[lib.pod]pod2man.com"
3eeba6fb 5546$!
97abc6ad
HM
5547$ IF (tzneedset)
5548$ THEN
5549$ WRITE CONFIG "$ define SYS$TIMEZONE_DIFFERENTIAL ''tzd'"
5550$ ELSE !leave in but commented out (in case setting was from perl :-)
5551$ WRITE CONFIG "$! define SYS$TIMEZONE_DIFFERENTIAL ''tzd'"
5552$ ENDIF
5553$ WRITE CONFIG "$!"
5554$ WRITE CONFIG "$! Symbols for commonly used scripts:"
5555$ WRITE CONFIG "$!"
86fced14
CB
5556$ IF (perl_symbol)
5557$ THEN
570bb66e 5558$ WRITE CONFIG "$ Perldoc == ""'"+"'Perl' ''vms_prefix':[lib.pod]Perldoc.com -t"""
86fced14
CB
5559$ WRITE CONFIG "$ pod2text == ""'"+"'Perl' pod2text"""
5560$ WRITE CONFIG "$ pod2html == ""'"+"'Perl' pod2html"""
570bb66e 5561$ WRITE CONFIG "$ pod2latex == ""'"+"'Perl' ''vms_prefix':[lib.pod]pod2latex.com"""
86fced14 5562$ WRITE CONFIG "$!pod2man == ""'"+"'Perl' pod2man"""
570bb66e
JH
5563$ WRITE CONFIG "$!Perlbug == ""'"+"'Perl' ''vms_prefix':[lib]Perlbug.com"""
5564$ WRITE CONFIG "$ c2ph == ""'"+"'Perl' ''vms_prefix':[utils]c2ph.com"""
86fced14
CB
5565$ IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions)
5566$ THEN
570bb66e 5567$ WRITE CONFIG "$ dprofpp == ""'"+"'Perl' ''vms_prefix':[utils]dprofpp.com"""
86fced14 5568$ ENDIF
570bb66e
JH
5569$ WRITE CONFIG "$ h2ph == ""'"+"'Perl' ''vms_prefix':[utils]h2ph.com"""
5570$ WRITE CONFIG "$ h2xs == ""'"+"'Perl' ''vms_prefix':[utils]h2xs.com"""
5571$ WRITE CONFIG "$!perlcc == ""'"+"'Perl' ''vms_prefix':[utils]perlcc.com"""
5572$ WRITE CONFIG "$ splain == ""'"+"'Perl' ''vms_prefix':[utils]splain.com"""
86fced14 5573$ ELSE
570bb66e 5574$ WRITE CONFIG "$ Perldoc == ""Perl ''vms_prefix':[lib.pod]Perldoc.com -t"""
86fced14
CB
5575$ WRITE CONFIG "$ pod2text == ""Perl pod2text"""
5576$ WRITE CONFIG "$ pod2html == ""Perl pod2html"""
570bb66e 5577$ WRITE CONFIG "$ pod2latex == ""Perl ''vms_prefix':[lib.pod]pod2latex.com"""
86fced14 5578$ WRITE CONFIG "$!pod2man == ""Perl pod2man"""
570bb66e
JH
5579$ WRITE CONFIG "$!Perlbug == ""Perl ''vms_prefix':[lib]Perlbug.com"""
5580$ WRITE CONFIG "$ c2ph == ""Perl ''vms_prefix':[utils]c2ph.com"""
86fced14
CB
5581$ IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions)
5582$ THEN
570bb66e 5583$ WRITE CONFIG "$ dprofpp == ""Perl ''vms_prefix':[utils]dprofpp.com"""
86fced14 5584$ ENDIF
570bb66e
JH
5585$ WRITE CONFIG "$ h2ph == ""Perl ''vms_prefix':[utils]h2ph.com"""
5586$ WRITE CONFIG "$ h2xs == ""Perl ''vms_prefix':[utils]h2xs.com"""
5587$ WRITE CONFIG "$!perlcc == ""Perl ''vms_prefix':[utils]perlcc.com"""
5588$ WRITE CONFIG "$ splain == ""Perl ''vms_prefix':[utils]splain.com"""
86fced14 5589$ ENDIF
97abc6ad
HM
5590$ CLOSE CONFIG
5591$!
5592$ echo ""
570bb66e
JH
5593$ echo "The file can be found at:"
5594$ echo4 " ''F$SEARCH(file_2_find)'"
5595$ echo "Add that file (or an @ call to it) to your [SY]LOGIN.COM"
5596$ echo "when you are satisfied with a successful compilation,"
5597$ echo "testing, and installation of your perl."
97abc6ad 5598$ echo ""
86fced14
CB
5599$ IF ((.NOT.perl_symbol) .AND. (perl_verb .EQS. "DCLTABLES"))
5600$ THEN
5601$ file_2_find = "[-]''packageup'_install.com"
5602$ OPEN/WRITE CONFIG 'file_2_find
5603$ WRITE CONFIG "$ set command perl /table=sys$common:[syslib]dcltables.exe -"
5604$ WRITE CONFIG " /output=sys$common:[syslib]dcltables.exe"
5605$ WRITE CONFIG "$ install replace sys$common:[syslib]dcltables.exe"
5606$ CLOSE CONFIG
5607$ echo4 ""
570bb66e
JH
5608$ echo4 "In order to install the ''packageup' verb into DCLTABLES run:"
5609$ echo4 " @ ''F$SEARCH(file_2_find)'"
5610$ echo4 "after a successful build, test, and install. Do so with CMKRNL privilege."
86fced14
CB
5611$ echo4 ""
5612$ ENDIF
97abc6ad
HM
5613$!
5614$!figure out where we "are" by parsing 'vms_default_directory_name'
5615$!
5616$ set_def_command = ""
5617$ dflt = F$ENVIRONMENT("DEFAULT") - ".UU]"
5618$ tmp = vms_default_directory_name - dflt - "]"
5619$ i = 0
5620$ IF tmp .EQS. "" THEN GOTO Beyond_set_def_loop
5621$Set_def_loop:
5622$ tmp1 = F$ELEMENT(i,".",tmp)
5623$ IF tmp1 .EQS. "." THEN GOTO Beyond_set_def_loop
5624$ IF i .EQ. 0
5625$ THEN set_def_command = "set default [-"
5626$ ELSE set_def_command = set_def_command + "-"
5627$ ENDIF
5628$ i = i + 1
5629$ GOTO Set_def_loop
5630$Beyond_set_def_loop:
5631$ IF set_def_command.NES.""
5632$ THEN
5633$ set_def_command = set_def_command - "-" + "]"
5634$ echo4 ""
5635$ echo4 "In order to build ''package' you must now issue the commands:"
5636$ echo4 ""
5637$ echo4 " ''set_def_command'"
5638$ ELSE
5639$ echo4 ""
5640$ echo4 "In order to build ''package' you must now issue the command:"
5641$ echo4 ""
5642$ ENDIF
5643$ echo4 " ''make'''makefile'", macros
5644$ echo4 ""
5645$!
a4521476
PP
5646$ IF ( F$SEARCH("config.msg").NES."" )
5647$ THEN
5648$ echo "Hmm. I also noted the following information while running:"
5649$ echo ""
5650$ type config.msg
5651$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) config.msg
5652$ DELETE/NOLOG/NOCONFIRM config.msg;
5653$ ENDIF
5654$!
97abc6ad
HM
5655$Clean_up:
5656$ IF (silent)
5657$ THEN
5658$ DEASSIGN SYS$OUTPUT
5659$! DEASSIGN SYS$ERROR
5660$ ENDIF
5661$ IF F$GETJPI("","FILCNT").NE.vms_filcnt THEN CLOSE CONFIG
5662$ IF F$GETJPI("","FILCNT").NE.vms_filcnt
5663$ THEN WRITE SYS$ERROR "%Config-W-VMS, WARNING: There is a file still open"
5664$ ENDIF
5665$ dflt = F$ENVIRONMENT("DEFAULT")
5666$ IF F$LOCATE("UU]",dflt).EQS.(F$LENGTH(dflt)-3)
5667$ THEN
5668$ IF ( F$SEARCH("[]*.*").NES."" ) THEN DELETE/NOLOG/NOCONFIRM []*.*;*
5669$ SET DEFAULT [-]
5670$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) UU.DIR
5671$ DELETE/NOLOG/NOCONFIRM UU.DIR;
5672$ ENDIF
5673$ SET DEFAULT 'vms_default_directory_name' !be kind rewind
5674$ STOP
5675$ EXIT
5676$!: End of Configure