This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to File::Path 2.06_07. (an e-mail from David)
[perl5.git] / configure.com
CommitLineData
f970f0fc 1$! OpenVMS configuration procedure for Perl -- do not attempt to run under DOS
7558ebc2 2$ sav_ver = 'F$VERIFY(0)'
9b5c8979 3$ on control_y then goto clean_up
97abc6ad
HM
4$! SET VERIFY
5$!
570bb66e 6$! For example, if you unpacked perl into: [USER.PERL-5n...] then you will
e6df7ed1 7$! want to cd into the tree and execute Configure:
97abc6ad 8$!
a3ef2c6f 9$! $ SET DEFAULT [USER.PERL5_xxx]
e6df7ed1 10$! $ @Configure
97abc6ad
HM
11$!
12$! or
13$!
a3ef2c6f 14$! $ SET DEFAULT [USER.PERL5_xxx]
e6df7ed1 15$! $ @Configure "-des"
97abc6ad
HM
16$!
17$! That's it. If you get into a bind trying to build perl on VMS then
429a5e67 18$! definitely read through the README.VMS file.
146174a9 19$! Beyond that send email to vmsperl@perl.org
97abc6ad
HM
20$!
21$! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22$!
97abc6ad 23$! send suggestions to:
a3ef2c6f 24$! Dan Sugalski <dan@sidhe.org>
97abc6ad
HM
25$! Thank you!!!!
26$!
27$! Adapted and converted from Larry Wall & Andy Dougherty's
429a5e67 28$! "Configure generated by metaconfig 3.0 PL60." by Peter Prymmer
146174a9
CB
29$! (a Bourne sh[ell] script for configuring the installation of perl
30$! on non-VMS systems) in the perl5.002|3 epoch (spring/summer 1996)
97abc6ad
HM
31$! with much valuable help from Charles Bailey &
32$! the whole VMSPerl crew.
429a5e67 33$! Extended and messed about with by Dan Sugalski
97abc6ad 34$!
97abc6ad
HM
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"
96021e87 40$ ld = "Link/nodebug"
97abc6ad
HM
41$ ans = ""
42$ macros = ""
c645ec3f 43$ extra_flags = ""
498336ed 44$ user_c_flags = ""
6c7aff00 45$ use_ieee_math = "y"
498336ed 46$ be_case_sensitive = "n"
4adb8845 47$ unlink_all_versions = "n"
96021e87 48$ builder = "MMK"
a3ef2c6f 49$ use_vmsdebug_perl = "n"
f53b4005
CB
50$ use64bitall = "n"
51$ use64bitint = "n"
65b8dcb0 52$ uselongdouble = "n"
fe6e2aaa 53$ uselargefiles = "y"
cfcfe586 54$ usestdstat = "n"
79e63f36 55$ usesitecustomize = "n"
97abc6ad 56$ C_Compiler_Replace = "CC="
3f39e13a
CB
57$ thread_upcalls = "MTU="
58$ thread_kernel = "MTK="
429a5e67
DS
59$ use_two_pot_malloc = "N"
60$ use_pack_malloc = "N"
61$ use_debugmalloc = "N"
570bb66e 62$ ccflags = ""
17e8697d 63$ static_ext = ""
5581d86f 64$ nonxs_ext = ""
97abc6ad 65$ vms_default_directory_name = F$ENVIRONMENT("DEFAULT")
570bb66e
JH
66$ max_allowed_dir_depth = 3 ! e.g. [A.B.PERLxxx] not [A.B.C.PERLxxx]
67$! max_allowed_dir_depth = 2 ! e.g. [A.PERLxxx] not [A.B.PERLxxx]
97abc6ad 68$!
c998f3c7
PP
69$! Sebastian Bazley's request: close the CONFIG handle with /NOLOG
70$! qualifier "just in case" (configure.com is re @ed in a bad state).
71$! This construct was tested to be not a problem as far back as
72$! VMS V5.5-2, hopefully earlier versions are OK as well.
73$!
74$ CLOSE/NOLOG CONFIG
75$!
76$! Now keep track of open files
77$!
97abc6ad
HM
78$ vms_filcnt = F$GETJPI ("","FILCNT")
79$!
80$!: compute my invocation name
81$ me = F$ENVIRONMENT("PROCEDURE")
82$!
83$! Many null statements (begin with colon ':') in the Bourne shell version of
84$! this script serve as comments/placeholders. I have retained some of the ones
85$! that will help you compare this .COM file to the sh version - as well as
86$! leave placeholders for future improvements to this .COM file.
87$! sfn = VMS "skipped for now"
88$!
89$!: Proper PATH separator !sfn
90$!: Proper PATH setting !sfn
91$!: Sanity checks !sfn "Say '@''$me''"
92$!: On HP-UX, large Configure scripts may exercise a bug in /bin/sh !sfn
93$!: Configure runs within the UU subdirectory !->after find MANIFEST
94$! <big long list of default values (mostly null)>
95$!: We must find out about Eunice early !(?)
96$!: list of known cpp symbols, sorted alphabetically !sfn
97$! al = al + "..."
98$!: default library list !sfn
99$! <no hints files in use (yet?)>
100$!: Extra object files, if any, needed on this platform. !sfn
101$!: Possible local include directories to search. !sfn
102$!: Set locincpth to "" in a hint file to defeat local include searches. !sfn
103$!locincpth="/usr/local/include /opt/local/include /usr/gnu/include" !sfn
104$!locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
105$!: no include file wanted by default !sfn
106$!inclwanted='' !sfn
107$!: Possible local library directories to search. !sfn
108$!loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib" !sfn
109$!loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib" !sfn
110$!: general looking path for locating libraries !sfn
111$!glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib" !sfn
112$!glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small" !sfn
113$!glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib" !sfn
114$!: Private path used by Configure to find libraries. Its value !sfn
115$!: is prepended to libpth. This variable takes care of special !sfn
116$!: machines, like the mips. Usually, it should be empty. !sfn
117$!plibpth='' !sfn
118$!: full support for void wanted by default !sfn
119$!defvoidused=15 !sfn
120$!: List of libraries we want. !sfn
121$!libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl' !sfn
122$!libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt" !sfn
123$!libswanted="$libswanted ucb bsd BSD PW x" !sfn
124$!: We probably want to search /usr/shlib before most other libraries. !sfn
125$!: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist. !sfn
126$!glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'` !sfn
127$!glibpth="/usr/shlib $glibpth" !sfn
128$!: Do not use vfork unless overridden by a hint file. !sfn
129$!usevfork=false !sfn
130$!: script used to extract .SH files with variable substitutions !sfn
131$!: produce awk script to parse command line options !sfn
132$!sfn (assume no sed awk) see below
133$!: process the command line options
134$!
135$!: set up default values
136$ fastread=""
137$ reuseval="false"
c886fb20 138$ maniskip = "false"
570bb66e 139$ IF F$TYPE(config_sh) .EQS. "" THEN config_sh=""
97abc6ad
HM
140$ alldone=""
141$ error=""
142$ silent=""
143$ extractsh=""
144$ override=""
145$ knowitall=""
414b89cc 146$ ccname="VAX"
97abc6ad 147$ Dec_C_Version = ""
570bb66e 148$ cxxversion = ""
97abc6ad 149$ use_threads = "F"
498336ed
CB
150$ use_5005_threads = "N"
151$ use_ithreads = "N"
97abc6ad
HM
152$!
153$!: option parsing
08c7cbbb 154$ config_args = ""
97abc6ad
HM
155$ IF (P1 .NES. "")
156$ THEN !one or more switches was thrown
157$ i = 1
158$ bang = 0
159$Param_loop:
08c7cbbb
GS
160$ IF (P'i'.NES."")
161$ THEN
162$ bang = bang + 1
163$ config_args = config_args + F$FAO(" !AS",P'i')
164$ ENDIF
97abc6ad
HM
165$ i = i + 1
166$ IF (i.LT.9) THEN GOTO Param_loop !DCL allows P1..P8
167$!
168$ i = 1
169$Opt_loop:
170$ IF (F$EXTRACT(0,1,P'i') .EQS. "-") THEN P'i' = P'i' - "-"
171$ IF (F$EXTRACT(0,1,P'i') .EQS. "/") THEN P'i' = P'i' - "/"
172$Remove_quotation_mark:
173$ P'i' = P'i' - """"
174$ IF F$LOCATE("""",P'i') .LT. F$LENGTH(P'i') THEN GOTO Remove_quotation_mark
175$ gotopt = "f" !"alse"
176$ gotshortopt = "f" !"alse"
177$ IF (F$EXTRACT(0,1,P'i') .EQS. "d")
178$ THEN
179$ fastread = "yes"
180$ gotopt = "t" !"rue"
181$ P'i' = P'i' - "d"
182$ gotshortopt = "t" !"rue"
183$ ENDIF
184$ IF (F$EXTRACT(0,1,P'i') .EQS. "e")
185$ THEN
186$ alldone = "cont"
187$ gotopt = "t"
188$ P'i' = P'i' - "e"
189$ gotshortopt = "t"
190$ ENDIF
570bb66e 191$ IF (F$EXTRACT(0,1,P'i') .EQS. "f") ! "-f"
97abc6ad
HM
192$ THEN
193$ P'i' = P'i' - "f"
194$ config_sh = P'i'
195$ IF (F$SEARCH(config_sh).NES."")
196$ THEN
8560c20d
CB
197$ test_config_sh = F$FILE_ATTRIBUTES(config_sh,"PRO")
198$ IF (F$LOCATE("R",test_config_sh).NE.F$LENGTH(test_config_sh))
97abc6ad 199$ THEN
570bb66e 200$ config_dflt = "y"
97abc6ad
HM
201$ CONTINUE !at this point check UIC && if test allows...
202$ !to be continued ?
203$ ELSE
204$ echo "''me': cannot read config file ''config_sh'."
205$ error="true"
206$ ENDIF
207$ ELSE
208$ echo "''me': cannot read config file ''config_sh'."
209$ error="true"
210$ ENDIF
211$ gotopt = "t"
212$ ENDIF
570bb66e 213$ IF (F$EXTRACT(0,1,P'i') .EQS. "h") ! "-h"
97abc6ad
HM
214$ THEN
215$ error = "true"
216$ gotopt = "t"
217$ P'i' = P'i' - "h"
218$ gotshortopt = "t"
219$ ENDIF
570bb66e 220$ IF (F$EXTRACT(0,1,P'i') .EQS. "m") ! "-m"
c886fb20
CB
221$ THEN
222$ maniskip = "true"
223$ gotopt = "t"
224$ P'i' = P'i' - "m"
225$ gotshortopt = "t"
226$ ENDIF
570bb66e 227$ IF (F$EXTRACT(0,1,P'i') .EQS. "r") ! "-r"
97abc6ad
HM
228$ THEN
229$ reuseval = "true"
230$ gotopt = "t"
231$ P'i' = P'i' - "r"
232$ gotshortopt = "t"
233$ ENDIF
570bb66e 234$ IF (F$EXTRACT(0,1,P'i') .EQS. "s") ! "-s"
97abc6ad
HM
235$ THEN
236$ silent = "true"
237$ gotopt = "t"
238$ P'i' = P'i' - "s"
239$ gotshortopt = "t"
240$ ENDIF
570bb66e 241$ IF (F$EXTRACT(0,1,P'i') .EQS. "E") ! "-E"
97abc6ad
HM
242$ THEN
243$ alldone = "exit"
244$ gotopt = "t"
245$ ENDIF
570bb66e 246$ IF (F$EXTRACT(0,1,P'i') .EQS. "K") ! "-K"
97abc6ad
HM
247$ THEN
248$ knowitall = "true"
249$ gotopt = "t"
250$ P'i' = P'i' - "K"
251$ gotshortopt = "t"
252$ ENDIF
570bb66e 253$ IF (F$EXTRACT(0,1,P'i') .EQS. "O") ! "-O"
97abc6ad
HM
254$ THEN
255$ override = "true"
256$ gotopt = "t"
257$ P'i' = P'i' - "O"
258$ gotshortopt = "t"
259$ ENDIF
570bb66e 260$ IF (F$EXTRACT(0,1,P'i') .EQS. "S") ! "-S"
97abc6ad 261$ THEN
570bb66e 262$ extractsh = "true" !VMS? Yes with munchconfig
97abc6ad
HM
263$ gotopt = "t"
264$ P'i' = P'i' - "S"
265$ gotshortopt = "t"
266$ ENDIF
570bb66e 267$ IF (F$EXTRACT(0,1,P'i') .EQS. "D") ! "-D"
97abc6ad
HM
268$ THEN
269$ P'i' = P'i' - "D"
97abc6ad
HM
270$ IF (F$LOCATE("=",P'i') .EQ. F$LENGTH(P'i'))
271$ THEN
570bb66e 272$ tmp = P'i' + "=""define"""
7558ebc2 273$ 'tmp'
570bb66e 274$ DELETE/SYMBOL tmp
97abc6ad
HM
275$ ELSE
276$ IF (F$LOCATE("=",P'i') .EQ. (F$LENGTH(P'i') - 1))
277$ THEN
278$ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE")
7558ebc2 279$ echo "''me': use ""-Usymbol=val"" not ""-Dsymbol=""."
97abc6ad
HM
280$ echo "''me': ignoring -D",P'i'
281$ ELSE
570bb66e
JH
282$ tmp = F$EXTRACT(0,F$LOCATE("=",P'i'),P'i')
283$ tmp = tmp + "=""" + F$EXTRACT(F$LOCATE("=",P'i')+1,F$LENGTH(P'i'),P'i') + """"
7558ebc2 284$ 'tmp'
570bb66e 285$ DELETE/SYMBOL tmp
97abc6ad
HM
286$ ENDIF
287$ ENDIF
97abc6ad
HM
288$ gotopt = "t"
289$ ENDIF
570bb66e 290$ IF (F$EXTRACT(0,1,P'i') .EQS. "U") ! "-U"
97abc6ad
HM
291$ THEN
292$ P'i' = P'i' - "U"
293$ IF (F$LOCATE("=",P'i') .EQ. F$LENGTH(P'i'))
294$ THEN
570bb66e 295$ tmp = P'i' + "="""""
7558ebc2 296$ 'tmp'
570bb66e 297$ DELETE/SYMBOL tmp
97abc6ad
HM
298$ ELSE
299$ IF (F$LOCATE("=",P'i') .LT. (F$LENGTH(P'i') - 1))
300$ THEN
301$ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE")
7558ebc2 302$ echo "''me': use ""-Dsymbol=val"" not ""-Usymbol=val""."
97abc6ad
HM
303$ echo "''me': ignoring -U",P'i'
304$ ELSE
570bb66e 305$ tmp = P'i' + "=""undef"""
7558ebc2 306$ 'tmp'
570bb66e 307$ DELETE/SYMBOL tmp
97abc6ad
HM
308$ ENDIF
309$ ENDIF
97abc6ad
HM
310$ gotopt = "t"
311$ ENDIF
312$ IF (F$EXTRACT(0,1,P'i') .EQS. "V")
313$ THEN
314$ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE")
315$ echo "''me' generated by an unknown version of EDT."
316$ STOP
570bb66e 317$ EXIT
97abc6ad
HM
318$ ENDIF
319$ IF .NOT.gotopt
320$ THEN
321$ echo "''me': unknown option ",P'i'
322$ error = "true"
323$ ENDIF
324$ IF (F$LENGTH(P'i').GT.0).AND.(gotshortopt) THEN i = i - 1 !clustered switch
325$ i = i + 1
326$ IF (i .LT. (bang + 1)) THEN GOTO Opt_loop
327$!
328$ ENDIF ! (P1 .NES. "")
08c7cbbb 329$ config_args = F$EDIT(config_args,"TRIM")
97abc6ad
HM
330$!
331$ IF (error)
332$ THEN
333$ me = F$PARSE(me,,,"DIRECTORY")+ F$PARSE(me,,,"NAME")
7558ebc2 334$ echo "Usage: @''me' [-dehmr""EKOSV""] [-fconfig.sh] [""-Dsymbol""] [""-Dsymbol=value""]"
c886fb20 335$ echo " [-Usymbol] [-Usymbol=]"
7558ebc2
PP
336$ TYPE SYS$INPUT:
337$ DECK
97abc6ad
HM
338 "-d" : use defaults for all answers.
339 "-e" : go on without questioning past the production of config.sh. *
340 "-f" : specify an alternate default configuration file.
341 "-h" : print this help message and exit (with an error status).
c886fb20 342 "-m" : skip the MANIFEST check to see that all files are present
97abc6ad
HM
343 "-r" : reuse C symbols value if possible (skips costly nm extraction).*
344 "-s" : silent mode, only echoes questions and essential information.
345 -"D" : define symbol to have some value: *
346 -"Dsymbol" symbol gets the value 'define'
347 -"Dsymbol=value" symbol gets the value 'value'
348 -E : stop at the end of questions, after having produced config.sh. *
349 -K : do not use unless you know what you are doing.
350 -O : let -D and -U override definitions from loaded configuration file. *
351 -S : perform variable substitutions on all .SH files (can mix with -f) *
352 -"U" : undefine symbol: *
353 -"Usymbol" symbol gets the value 'undef'
354 -"Usymbol=" symbol gets completely empty
355 -V : print version number and exit (with a zero status).
7558ebc2 356$ EOD
97abc6ad
HM
357$ echo "%Config-I-VMS, lower case switches must be enclosed"
358$ echo "-Config-I-VMS, in double quotation marks, e.g.:"
359$ echo "-Config-I-VMS, @Configure ""-des"""
360$ echo "-Config-I-VMS, * indicates switch may not be fully implemented for VMS."
361$ SET DEFAULT 'vms_default_directory_name' !be kind rewind
362$ STOP
363$ EXIT 3 ! $STATUS = "%X00000003" (informational)
364$ ENDIF
365$!
366$ GOTO Check_silence
367$!
368$Shut_up:
01792a70
CB
369$ IF F$Mode() .eqs. "BATCH"
370$ THEN
414b89cc
CB
371$ STDOUT = F$PARSE(F$GETQUI("DISPLAY_ENTRY", "JOB_NAME"), -
372 F$GETQUI("DISPLAY_ENTRY", "LOG_SPECIFICATION"), ".LOG")
01792a70
CB
373$ WRITE SYS$OUTPUT "Warning: Executing in batch mode. To avoid file locking conflicts,"
374$ WRITE SYS$OUTPUT "output intended for SYS$OUTPUT will be sent to a new version"
375$ WRITE SYS$OUTPUT STDOUT
376$ ELSE
377$ STDOUT = F$TRNLNM("SYS$OUTPUT")
378$ ENDIF
97abc6ad
HM
379$ DEFINE SYS$OUTPUT "_NLA0:"
380$ echo4 = "write STDOUT "
381$ cat4 = "TYPE/OUTPUT=''STDOUT'"
01792a70 382$ open/write/share=read STDOUT 'STDOUT'
97abc6ad
HM
383$ RETURN
384$!
385$Check_silence:
386$ IF (silent)
387$ THEN
388$ GOSUB Shut_up
389$ ELSE
390$ echo4 = "write SYS$OUTPUT "
391$ cat4 = "TYPE"
392$ ENDIF
393$!
394$!: run the defines and the undefines, if any, but leave the file out there...
395$! Unfortunately Configure.COM in DCL is not yet set up to do this -
396$! maybe someday
397$!
398$!: set package name
399$ package = "perl5"
f53b4005 400$ packageup = F$EDIT((package - "5"),"UPCASE")
97abc6ad
HM
401$!
402$!: Eunice requires " " instead of "", can you believe it
403$ echo ""
404$!: Here we go...
405$ echo "Beginning of configuration questions for ''package'."
406$ echo ""
407$!
408$!: Some greps do not return status, grrr.
409$ contains = "SEARCH"
410$!
411$!: first determine how to suppress newline on echo command !cant DCL is record oriented
412$! echo "Checking ''echo' to see how to suppress newlines..."
413$! echo "giving up..."
414$! echo "The star should be here-->*"
415$!
416$!: Now test for existence of everything in MANIFEST
417$ echo ""
418$ echo4 "First let's make sure your kit is complete. Checking..."
419$ manifestfound = ""
420$ miss_list = ""
a5fddd44 421$! Here I assume we are in the [foo.PERLxxx...] tree
97abc6ad
HM
422$! because the search routine simply does set def [-] if necessary.
423$ file_2_find = "MANIFEST" !I hope this one is not in [foo.PERL5xxx.VMS...]
424$Research_manifest:
425$ manifestfound = F$SEARCH(file_2_find)
426$ IF (manifestfound .EQS. "")
427$ THEN
428$ IF F$PARSE(F$ENVIRONMENT("DEFAULT"),,,"DIRECTORY",).NES."[000000]"
429$ THEN
430$ SET DEFAULT [-]
431$ GOTO Research_manifest
432$ ELSE
433$ echo ""
434$ echo "There is no MANIFEST file. I hope your kit is complete !"
435$ miss_list = ""
436$ GOTO Beyond_manifest
437$ ENDIF
438$ ELSE
dab31494
PP
439$! MANIFEST. has been found and we have set def'ed there.
440$! Time to bail out before it's too late, i.e. too deep.
441$! Depth check is unnecessary on Alpha VMS V7.2++ (even for ODS-2).
442$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
443$ IF (tmp .GES. "7.2") .AND. (F$GETSYI("HW_MODEL") .GE. 1024) THEN GOTO Beyond_depth_check
444$! Depth check also unnecessary on ODS 5 (or later) file systems.
445$ tmp = F$INTEGER(F$GETDVI(F$ENVIRONMENT("DEFAULT"),"ACPTYPE") - "F11V")
446$ IF (tmp .GE. 5) THEN GOTO Beyond_depth_check
447$ IF (F$ELEMENT(max_allowed_dir_depth,".",F$ENVIRONMENT("DEFAULT")).nes.".")
97abc6ad
HM
448$ THEN
449$ TYPE SYS$INPUT:
7558ebc2 450$ DECK
97abc6ad
HM
451%Config-E-VMS, ERROR:
452 Sorry! It apears as though your perl build sub-directory is already too
453 deep into the VMS file system. Please try moving stuff into a shallower
454 directory (or altering the "max_allowed_dir_depth" parameter).
7558ebc2 455$ EOD
97abc6ad
HM
456$ echo4 "ABORTING..."
457$ SET DEFAULT 'vms_default_directory_name' !be kind rewind
458$ STOP
459$ EXIT !2 !$STATUS = "%X00000002" (error)
460$ ENDIF
e6df7ed1 461$Beyond_depth_check:
97abc6ad
HM
462$!
463$! after finding MANIFEST let's create (but not yet enter) the UU subdirectory
464$!
465$ IF (manifestfound .NES. "")
466$ THEN
467$ IF ( F$SEARCH("UU.DIR").EQS."" )
468$ THEN
469$ CREATE/DIRECTORY [.UU]
470$ ELSE
fcc434ad 471$ IF ( F$SEARCH("[.UU]*.*").NES."" ) THEN DELETE/NOLOG/NOCONFIRM [.UU]*.*;*
97abc6ad
HM
472$ ENDIF
473$!: Configure runs within the UU subdirectory
474$ SET DEFAULT [.UU]
475$!
476$! a little redundancy never hurt anybody?
477$ file_2_find = "[-]" + file_2_find
478$ manifestfound = F$SEARCH(file_2_find)
479$!
480$ OPEN/WRITE MISSING MISSING.
481$!change to "FALSE" if you wish to skip the manifest search
482$!(which after all is rather slow in DCL :-)
c886fb20 483$ IF (maniskip)
97abc6ad 484$ THEN
c886fb20
CB
485$ echo "Skipping MANIFEST check as requested"
486$ ELSE
487$!
97abc6ad
HM
488$ OPEN/READ CONFIG 'manifestfound'
489$Read_loop_manifest:
490$ READ/END_OF_FILE = Done_manifest CONFIG line
491$! This algorithm turns "foo/bar/baz.c" into "[.foo.bar]baz.c"
492$! pvhp@lns62.lns.cornell.edu 10-JUN-1996 20:31:46
493$! 2-MAR-1998 15:46:11 Improved to turn "foo/bar/baz.c.buz"
494$! into "[.foo.bar]baz.c_buz as happens with vmstar and unzip
495$ line = F$EDIT(line,"TRIM, COMPRESS")
496$ file_2_find = F$EXTRACT(0,F$LOCATE(" ",line),line)
497$ IF F$LOCATE("/",file_2_find) .NE. F$LENGTH(file_2_find)
498$ THEN
499$Re_strip_line_manifest:
500$ loca = F$LOCATE("/",file_2_find)
501$ ante = F$EXTRACT(0,loca,file_2_find)
502$ post = F$EXTRACT(loca,F$LENGTH(file_2_find),file_2_find)
503$ test_this = ante + "." + (post - "/")
504$ IF F$LOCATE("/",test_this) .NE. F$LENGTH(test_this)
505$ THEN
506$ file_2_find = ante + "." + (post - "/")
507$ GOTO Re_strip_line_manifest
508$ ELSE
509$ file_2_find = ante + "]" + (post - "/")
510$ ENDIF
511$ file_2_find = "[-."+file_2_find
512$ ELSE
513$ file_2_find = "[-]" + file_2_find
514$ ENDIF
515$!
adb2331d
CB
516$ tmp = F$PARSE(file_2_find + ";",,,,"SYNTAX_ONLY")
517$ IF F$SEARCH(tmp) .NES. "" THEN file_2_find = tmp
97abc6ad
HM
518$ dirname = F$EXTRACT(0,F$LOCATE("]",file_2_find),file_2_find) + "]"
519$ file_2_find = file_2_find - dirname
17d0565f
CB
520$!
521$! may not need double dot check on ODS-5 volumes
522$ found = F$SEARCH(dirname + file_2_find)
523$ IF found .NES. "" THEN GOTO Read_loop_manifest
524$!
97abc6ad
HM
525$ dots = 0
526$Dot_loop:
527$ dot_ele = F$ELEMENT(dots,".",file_2_find)
528$ IF dot_ele .EQS. "." THEN GOTO Eo_dot_loop
529$ IF dots .eq. 0
530$ THEN basename = f$extract(0,f$locate(".",file_2_find),file_2_find) + "."
531$ ELSE basename = basename + dot_ele + "_"
532$ ENDIF
533$ dots = dots + 1
534$ GOTO dot_loop
535$Eo_dot_loop:
536$ IF (((f$length(file_2_find)+1) .eq. f$length(basename)) .and. -
537 (f$extract(f$length(basename)-1,1,basename) .eqs. "_")) THEN -
538 basename = f$extract(0,f$length(basename)-1,basename)
539$ file_2_find = dirname + basename
540$!
541$ found = F$SEARCH(file_2_find)
146174a9
CB
542$ IF (found .EQS. "" .AND. dots .GT. 2)
543$ THEN
544$! 17-DEC-1999 Improved to turn "[.foo.bar]baz.c_buz" into
545$! "[.foo.bar]baz_c.buz" to cover unzipped archives and put
546$! "[.foo.bar]baz.c_buz,baz_c.buz" into missing list if neither is found.
53071e5e
CB
547$ dotloc = f$locate(".",basename)
548$ basename[dotloc,1] := "_"
549$ dot_ele = F$ELEMENT(dots - 1,"_",f$extract(dotloc,f$length(basename),basename))
146174a9
CB
550$ basename = -
551 f$extract(0,f$length(basename)-(f$length(dot_ele)+1),basename) -
552 + "." + dot_ele
553$ found = F$SEARCH(dirname + basename)
554$ file_2_find = file_2_find + "," + basename
555$ ENDIF
1bae32db
CB
556$ tildeloc = f$locate("~",basename)
557$ IF (found .EQS. "" .AND. tildeloc .LT. f$length(basename))
558$ THEN
559$ basename[tildeloc,1] := "_"
560$ found = F$SEARCH(dirname + basename)
561$ file_2_find = file_2_find + "," + basename
562$ ENDIF
97abc6ad
HM
563$ IF (found .EQS. "")
564$ THEN
565$ WRITE MISSING file_2_find
566$ IF ((F$LENGTH(miss_list)+F$LENGTH(file_2_find)).LT.250)
567$ THEN
568$ miss_list = miss_list + "," + file_2_find
569$ ENDIF
570$ ENDIF
571$ GOTO Read_loop_manifest
572$Done_manifest:
573$ CLOSE CONFIG
574$ ENDIF !"TRUE"
575$ CLOSE MISSING
576$ ENDIF ! (manifestfound .NES. "")
577$Beyond_manifest:
578$ IF (miss_list .NES. "")
579$ THEN
580$ echo "Some of the files not found include:"
581$ cat4 MISSING.
582$ ENDIF
583$ IF ((miss_list .NES. "").OR.(manifestfound .EQS. ""))
584$ THEN
585$ TYPE SYS$INPUT:
7558ebc2
PP
586$ DECK
587
97abc6ad
HM
588
589THIS PACKAGE SEEMS TO BE INCOMPLETE.
590
591You have the option of continuing the configuration process, despite the
592distinct possibility that your kit is damaged, by typing 'y'es. If you
593do, don't blame me if something goes wrong. I advise you to type 'n'o
498336ed 594and contact the author (dan@sidhe.org)
97abc6ad 595
7558ebc2 596$ EOD
97abc6ad
HM
597$ READ SYS$COMMAND/PROMPT="Continue? [n] " ans
598$ IF ans
599$ THEN
600$ echo4 "Continuing..."
601$ ELSE
602$ echo4 "ABORTING..."
603$ GOTO Clean_up
604$ ENDIF
605$ ELSE
606$ echo4 "Looks good..."
fcc434ad 607$ DELETE/NOLOG/NOCONFIRM MISSING.;
97abc6ad
HM
608$ ENDIF ! (miss_list .NES. "")
609$ ENDIF ! (manifestfound .EQS. "") ELSE
610$!
611$! after finding MANIFEST (see above)
612$!: Configure runs within the UU subdirectory
613$!
614$!: compute the number of columns on the terminal for proper question formatting
a3bd614a
PP
615$ IF F$MODE() .EQS. "BATCH"
616$! else it winds up being 512 in batch
617$ THEN COLUMNS = 80
618$ ELSE COLUMNS = F$GETDVI("SYS$OUTPUT","DEVBUFSIZ")
619$ ENDIF
620$! "-des" sets SYS$OUTPUT to NL: with a DEVBUFSIZ too large (512 again)
621$ IF COLUMNS .GT. 210 THEN COLUMNS = 80
622$! not sure if this would actually be needed - it hopefully will not hurt
623$ IF COLUMNS .LT. 40 THEN COLUMNS = 40
97abc6ad
HM
624$!
625$!: set up the echo used in my read !sfn
626$!: now set up to do reads with possible shell escape and default assignment !sfn
627$ GOTO Beyond_myread
628$!
a3bd614a
PP
629$! The sub_rp splitting is intended to handle long symbols such as the dflt for
630$! extensions.
631$!
97abc6ad
HM
632$myread:
633$ ans = ""
a3bd614a 634$ len_rp = F$LENGTH(rp)
a5fddd44 635$ If (.NOT. silent) Then echo ""
a3bd614a
PP
636$ IF len_rp .GT. 210
637$ THEN
638$ i_rp = 0
9b5c8979 639$ rp_loop:
a3bd614a 640$ sub_rp = F$EXTRACT(i_rp,COLUMNS,rp)
a3bd614a 641$ i_rp = i_rp + COLUMNS
bf25f2b5 642$ if i_rp .LT. len_rp THEN echo4 "''sub_rp'"
9b5c8979 643$ IF i_rp .LT. len_rp THEN GOTO rp_loop
a3bd614a 644$ ELSE
9b5c8979 645$ sub_rp = rp
a3bd614a 646$ ENDIF
9b5c8979
JH
647$ if (fastread)
648$ then
649$ echo4 "''sub_rp'"
650$ else
651$ READ SYS$COMMAND/PROMPT="''sub_rp'" ans
652$ endif
a5fddd44
PP
653$ IF (ans .EQS. "&-d")
654$ THEN
655$ echo4 "(OK, I will run with -d after this question.)"
9b5c8979
JH
656$ echo ""
657$ deferred_fastread =1
658$ goto myread
a5fddd44
PP
659$ ENDIF
660$ IF (ans .EQS. "&-s")
661$ THEN
662$ echo4 "(OK, I will run with -s after this question.)"
97abc6ad 663$ echo ""
9b5c8979
JH
664$ deferred_silent = 1
665$ goto myread
a3bd614a 666$ ENDIF
9b5c8979
JH
667$ if (bool_dflt .nes. "")
668$ then
669$ if (ans .eqs. "") then ans = bool_dflt
670$ ans = f$extract(0,1,f$edit(ans,"collapse,upcase"))
671$ if (ans .eqs. "Y" .or. ans .eqs. "1" .or. ans .eqs. "T")
672$ then
673$ ans = "Y"
674$ else
675$ if (ans .eqs. "N" .or. ans .eqs. "0" .or. ans .eqs. "F")
676$ then
677$ ans = "N"
678$ else
679$ echo4 "Input not understood please answer 'Yes' or 'No'"
680$ goto myread
681$ endif
682$ endif
683$ bool_dflt = ""
684$ else
685$ ans = f$edit(ans,"trim,compress")
686$ if (ans .eqs. "") then ans = dflt
687$ if (f$edit(ans,"upcase") .eqs. "NONE") then ans = ""
688$ endif
689$ if f$type(deferred_silent) .nes. ""
690$ then
a5fddd44
PP
691$ silent := true
692$ GOSUB Shut_up
9b5c8979 693$ delete/symbol deferred_silent
a5fddd44 694$ ENDIF
9b5c8979
JH
695$ if f$type(deferred_fastread) .nes. ""
696$ then
697$ fastread = 1
698$ delete/symbol deferred_fastread
699$ endif
97abc6ad
HM
700$ RETURN
701$!
702$Beyond_myread:
703$!
704$!: create .config dir to save info across Configure sessions
705$ IF ( F$SEARCH("[-]CONFIG.DIR").EQS."" )
706$ THEN
707$ CREATE/DIRECTORY [-.CONFIG]
708$ OPEN/WRITE CONFIG [-.CONFIG]README.
709$ WRITE CONFIG -
710 "This directory created by Configure to save information that should"
711$ WRITE CONFIG -
712 "persist across sessions."
713$ WRITE CONFIG ""
714$ WRITE CONFIG -
715 "You may safely delete it if you wish."
716$ CLOSE CONFIG
717$ ENDIF
718$!
56aeb0ae
PP
719$ IF F$TYPE(usedevel) .EQS. "" THEN usedevel := n
720$ patchlevel_h = F$SEARCH("[-]patchlevel.h")
721$ IF (patchlevel_h.NES."")
722$ THEN
7558ebc2 723$ SEARCH 'patchlevel_h' "define","PERL_VERSION","epoch"/match=and/out=[]ver.out
59a27e12 724$ IF .NOT. usedevel .AND. usedevel .NES. "define"
56aeb0ae
PP
725$ THEN
726$ OPEN/READ CONFIG []ver.out
727$ READ CONFIG line
728$ CLOSE CONFIG
729$ tmp = F$EDIT(line,"TRIM,COMPRESS")
730$ xpatchlevel = F$INTEGER(F$ELEMENT(2," ",tmp))
731$ line = xpatchlevel / 2
732$ tmp = xpatchlevel - ( line * 2 )
733$ IF tmp .NE. 0
734$ THEN
735$ echo4 "patchlevel is " + F$STRING(xpatchlevel)
736$ cat4 SYS$INPUT:
7558ebc2 737$ DECK
56aeb0ae
PP
738*** WHOA THERE!!! ***
739
740 This is an UNSTABLE DEVELOPMENT release.
741 (The patchlevel, is odd--as opposed to even,
742 and that signifies a development release. If you want a
743 maintenance release, you want an even-numbered release.)
744
745 Do ***NOT*** install this into production use.
746 Data corruption and crashes are possible.
747
748 It is most seriously suggested that you do not continue any further
749 unless you want to help in developing and debugging Perl.
750
7558ebc2 751$ EOD
9b5c8979
JH
752$ bool_dflt="n"
753$ rp="Do you really want to continue? [''bool_dflt'] "
c66e9063
CL
754$ fastread_save = fastread
755$ fastread := FALSE
56aeb0ae 756$ GOSUB myread
c66e9063
CL
757$ fastread = fastread_save
758$ delete/symbol fastread_save
56aeb0ae
PP
759$ IF ans
760$ THEN
761$ echo4 "Okay, continuing."
762$ ELSE
763$ echo4 "Okay, bye."
764$ DELETE/NOLOG/NOCONFIRM []ver.out;
765$ GOTO Clean_up
56aeb0ae
PP
766$ ENDIF
767$ ENDIF
768$ DELETE/SYMBOL line
769$ DELETE/SYMBOL tmp
770$ ENDIF
771$ DELETE/NOLOG/NOCONFIRM []ver.out;
772$ ENDIF
97abc6ad
HM
773$!: general instructions
774$ needman = "true"
775$ firsttime = "true"
776$ user = F$EDIT(F$GETJPI("","USERNAME"),"TRIM,COLLAPSE")
777$ IF .NOT.(F$SEARCH("[-.CONFIG]INSTRUCT.").EQS."")
778$ THEN
779$ messages = F$ENVIRONMENT("MESSAGE")
a3ef2c6f 780$ SET MESSAGE/NOFAC/NOSEV/NOIDENT/NOTEXT
97abc6ad
HM
781$ contains /NOOUTPUT [-.CONFIG]INSTRUCT. 'user'
782$ IF .NOT.($status.EQ.%X08D78053)
783$ THEN
784$ firsttime=""
9b5c8979
JH
785$ bool_dflt = "n"
786$ rp = "Would you like to see the instructions? [''bool_dflt'] "
97abc6ad
HM
787$ GOSUB myread
788$ if .NOT.ans THEN needman=""
789$ ENDIF
a3ef2c6f 790$ SET MESSAGE 'messages'
97abc6ad
HM
791$ ENDIF
792$ if (fastread.AND.silent.AND.(alldone.eqs."cont")) THEN needman=""
793$!
794$ IF (needman)
795$ THEN
796$ TYPE SYS$INPUT:
7558ebc2 797$ DECK
97abc6ad
HM
798
799This installation shell script will examine your system and ask you questions
800to determine how the perl5 package should be installed. If you get
801stuck on a question, you may use a ^C or ^Y shell escape to STOP this
802process, edit something, then restart this process as you just did.
803Many of the questions will have default answers in square
804brackets; typing carriage return will give you the default.
805
7558ebc2 806$ EOD
96021e87
JM
807$ if (fastread)
808$ then
809$ echo4 ""
810$ else
811$ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans
812$ endif
97abc6ad 813$ TYPE SYS$INPUT:
7558ebc2 814$ DECK
97abc6ad 815
a3ef2c6f 816In a hurry? You may run '@Configure "-d"'. This will bypass nearly all
97abc6ad 817the questions and use the computed defaults (or the previous answers provided
a3ef2c6f 818there was already a config.sh file). Type '@Configure "-h"' for a list of
97abc6ad
HM
819options.
820
7558ebc2 821$ EOD
96021e87
JM
822$ if (fastread)
823$ then
824$ echo4 ""
825$ else
826$ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans
827$ endif
97abc6ad 828$ TYPE SYS$INPUT:
7558ebc2 829$ DECK
97abc6ad
HM
830
831Much effort has been expended to ensure that this shell script will
832run on any VMS system. If despite that it blows up on yours, your
833best bet is to edit Configure.com and @ it again. Whatever problems
498336ed 834you have with Configure.com, let me (dan@sidhe.org) know how I blew
97abc6ad
HM
835it.
836
7558ebc2 837$ EOD
97abc6ad
HM
838$!This installation script affects things in two ways:
839$!
840$!1) it may do direct variable substitutions on some of the files included
841$! in this kit.
842$!2) it builds a config.h file for inclusion in C programs. You may edit
843$! any of these files as the need arises after running this script.
844$!
845$!If you make a mistake on a question, there is no easy way to back up to it
846$!currently.
847$!
96021e87
JM
848$ if (fastread)
849$ then
850$ echo4 ""
851$ else
852$ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans
853$ endif
97abc6ad
HM
854$ IF (F$SEARCH("[-.CONFIG]INSTRUCT.").EQS."")
855$ THEN
856$ OPEN/WRITE CONFIG [-.CONFIG]INSTRUCT.
857$ WRITE CONFIG user
858$ CLOSE CONFIG
859$ ENDIF
860$ ENDIF !(needman .EQS. "true")
861$!
862$!: see if sh knows # comments !sfn
97abc6ad
HM
863$!: figure out how to guarantee sh startup !sfn
864$!: find out where common programs are !sfn
865$!loclist="awk/cat/comm/cp/echo/expr/find/grep/ln/ls/mkdir/rm/sed/sort/touch/tr/uniq"
5869b1f1 866$!trylist="byacc/cpp/csh/date/egrep/less/line/more/nroff/perl/pg/sendmail/test/uname"
97abc6ad
HM
867$! echo "I don't know where '$file' is, and my life depends on it."
868$! echo "Go find a public domain implementation or fix your PATH setting!"
869$! echo ""
870$! echo "Don't worry if any of the following aren't found..."
96021e87 871$!: determine whether symbolic links are supported !sfn !jem- further down
97abc6ad
HM
872$!: see whether [:lower:] and [:upper:] are supported character classes !sfn
873$!: set up the translation script tr, must be called with ./tr of course !sfn
874$!
875$!: Try to determine whether config.sh was made on this system
876$!: Get old answers from old config file if Configure was run on the
877$!: same system, otherwise use the hints.
bf12dbb5 878$ config_sh_es = "''config_sh'/[-]config.sh/"
97abc6ad
HM
879$ i = 0
880$ max = 3
881$Config_sh_look:
882$ config_sh = F$ELEMENT(i,"/",config_sh_es)
883$ i = i + 1
884$ IF (config_sh.NES."/").AND.(config_sh.NES."")
885$ THEN
886$ configshfound = F$SEARCH(config_sh)
887$ IF (configshfound.NES."") THEN GOTO Config_sh_found
888$ ENDIF
889$ IF (i.LT.max) THEN GOTO Config_sh_look
56aeb0ae 890$ osname = F$EDIT(F$GETSYI("NODE_SWTYPE"),"COLLAPSE")
570bb66e
JH
891$ IF (configshfound.EQS."")
892$ THEN
893$ config_sh = "[-]config.sh" ! the fallback default
894$ GOTO Beyond_config_sh
895$ ENDIF
97abc6ad 896$Config_sh_found:
56aeb0ae 897$ IF F$TYPE(osname) .EQS. "" THEN osname = F$EDIT(F$GETSYI("NODE_SWTYPE"),"COLLAPSE")
9b5c8979
JH
898$ bool_dflt = "n"
899$ IF F$TYPE(config_dflt) .NES. "" THEN bool_dflt = config_dflt
900$ rp = "Shall I use ''config_sh' for default answers? [''bool_dflt'] "
570bb66e
JH
901$ GOSUB myread
902$ IF ans
903$ THEN
904$ echo ""
905$ echo "Fetching default answers from ''config_sh'..."
906$!
9b5c8979
JH
907$! we do our own parsing of the shell-script stuff
908$! ...and only accept symbols if they're in the | delimited list below
909$!
910$ config_symbols0 ="|archlib|archlibexp|bin|binexp|builddir|cf_email|config_sh|installarchlib|installbin|installman1dir|installman3dir|"
911$ config_symbols1 ="|installprivlib|installscript|installsitearch|installsitelib|most|oldarchlib|oldarchlibexp|osname|pager|perl_symbol|perl_verb|"
ec18bc92 912$ config_symbols2 ="|prefix|privlib|privlibexp|scriptdir|sitearch|sitearchexp|sitebin|sitelib|sitelib_stem|sitelibexp|try_cxx|use64bitall|use64bitint|"
50ddda1d 913$ config_symbols3 ="|usecasesensitive|usedefaulttypes|usedevel|useieee|useithreads|uselongdouble|usemultiplicity|usemymalloc|usedebugging_perl|"
65f9def6 914$ config_symbols4 ="|useperlio|usesecurelog|usethreads|usevmsdebug|usefaststdio|usemallocwrap|unlink_all_versions|uselargefiles|usesitecustomize|"
8cb5d3d5 915$ config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthread"
9b5c8979
JH
916$!
917$ open/read CONFIG 'config_sh'
918$ rd_conf_loop:
919$ read/end=erd_conf_loop CONFIG line
920$ line = f$edit(line,"trim")
921$ if line .eqs. "" .or. f$extract(0,1,line) .eqs. "#" then goto rd_conf_loop
922$ sym = f$element(0,"=",line)
923$ if sym .eqs. "=" then goto rd_conf_loop
924$ dsym = "|"+sym+"|"
925$ k = 0
926$ rd_ck_loop:
927$ syms = config_symbols'k'
928$ j = f$locate(dsym, syms)
929$ if j .lt. f$length(syms) then goto erd_ck_loop
930$ k = k + 1
96021e87 931$ if k .lt. 6 then goto rd_ck_loop
9b5c8979
JH
932$ goto rd_conf_loop
933$ erd_ck_loop:
934$ val = f$element(1,"=",line)
935$ val = f$extract(1,f$length(val)-2,val)
936$ write sys$output "''sym' = ""''val'"""
937$ 'sym' = "''val'"
938$ goto rd_conf_loop
939$ erd_conf_loop:
940$ close CONFIG
941$ delete/symbol config_symbols0
942$ delete/symbol config_symbols1
943$ delete/symbol config_symbols2
944$ delete/symbol config_symbols3
945$ delete/symbol config_symbols4
96021e87 946$ delete/symbol config_symbols5
9b5c8979
JH
947$ delete/symbol sym
948$ delete/symbol val
949$ delete/symbol dsym
950$ if f$type(usedebugging_perl) .nes. ""
951$ then
952$ useperldebug = usedebugging_perl
953$ delete/symbol usedebugging_perl
954$ endif
570bb66e
JH
955$!
956$ ENDIF
9b5c8979 957$ if f$type(config_dflt) .nes. "" then DELETE/SYMBOL config_dflt
570bb66e 958$!
97abc6ad
HM
959$!we actually do not have "hints/" for VMS
960$! TYPE SYS$INPUT:
7558ebc2 961$! DECK
97abc6ad
HM
962$!
963$!First time through, eh? I have some defaults handy for the following systems:
964$!
7558ebc2 965$! EOD
97abc6ad
HM
966$! echo " ","VMS_VAX"
967$! echo " ","VMS_AXP"
a50752f9 968$! echo " ","VMS_IA64"
97abc6ad
HM
969$! : Now look for a hint file osname_osvers, unless one has been
970$! : specified already.
971$! TYPE SYS$INPUT:
972$!
973$!You may give one or more space-separated answers, or "none" if appropriate.
974$!If your OS version has no hints, DO NOT give a wrong version -- say "none".
975$!
976$! READ SYS$COMMAND/PROMPT="Which of these apply, if any? " ans
977$!
978$Beyond_config_sh:
979$!
980$!: Restore computed paths !sfn
981$!
97abc6ad
HM
982$! %Config-I-VMS, a necessary error trap (could be PC running VCL)
983$!
984$ IF (osname .NES. "VMS")
985$ THEN
986$ echo4 "Hmm.. I wonder what ''osname' is (?)"
987$ TYPE SYS$INPUT:
7558ebc2 988$ DECK
97abc6ad
HM
989
990%Config-E-VMS, ERROR:
991
992 Err, you do not appear to be running VMS!
146174a9 993 This procedure is intended to Configure the building of Perl for VMS.
97abc6ad 994
7558ebc2 995$ EOD
9b5c8979
JH
996$ bool_dflt = "n"
997$ GOSUB myread
97abc6ad
HM
998$ IF ans
999$ THEN
1000$ echo4 "Continuing..."
1001$ ELSE
1002$ echo4 "ABORTING..."
1003$ SET DEFAULT 'vms_default_directory_name' !be kind rewind
1004$ STOP
1005$ EXIT 2 !$STATUS = "%X00000002" (error)
1006$ ENDIF
97abc6ad
HM
1007$ ENDIF !(osname .NES./.EQS. "VMS")
1008$!
1009$!: who configured the system
97abc6ad 1010$ cf_by = F$EDIT(user,"LOWERCASE")
08c7cbbb 1011$ osvers = F$EDIT(F$GETSYI("VERSION"),"TRIM")
97abc6ad
HM
1012$!
1013$! Peter Prymmer has seen:
1014$! "SYS$TIMEZONE_DIFFERENTIAL" = "-46800" (sic)
1015$! "SYS$TIME_ZONE" = "EDT"
1016$!
1017$! Charles Lane recommended:
1018$! "SYS$TIMEZONE_DIFFERENTIAL" = "-14400"
1019$! "NEWS_TIMEZONE" = "-0500"
1020$! "ST_TIMEZONE" = "EDT"
1021$! "JAN_TIME_ZONE" = "EST "
1022$! "MULTINET_TIMEZONE" = "EST"
1023$! "DAYLIGHT_SAVINGS" = "1"
1024$!
1025$! Charles Bailey recommends (in ANU NEWS Doc Jan 1995):
1026$! "PMDF_Timezone"
1027$! "Multinet_Timezone"
1028$! "TCPware_Timezone"
1029$! "WIN$Time_Zone"
1030$!
1031$! This snippet o' DCL returns a string in default Unix `date` format,
1032$! and it will prompt to set SYS$TIMEZONE_DIFFERENTIAL.
97abc6ad
HM
1033$!
1034$ MIN_TZO = -840 !units are minutes here
1035$ MAX_TZO = 840
1036$!
1037$ wkday = F$EXTRACT(0,3,F$CVTIME(,,"WEEKDAY"))
1038$ monn = F$CVTIME(,,"MONTH")
1039$ mday = F$EXTRACT(8,2,F$CVTIME(,,"DATE"))
1040$ hour = F$CVTIME(,,"HOUR")
1041$ min = F$CVTIME(,,"MINUTE")
1042$ sec = F$CVTIME(,,"SECOND")
1043$ year = F$CVTIME(,,"YEAR")
1044$!
1045$ months = "/Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/Dec/"
1046$ i = 0
1047$Mon_loop:
1048$ i = i + 1
1049$ mon = F$ELEMENT(i,"/",months)
1050$ IF i.LT.monn THEN GOTO Mon_loop
1051$!
1052$ tzneedset = "t"
1053$ systz = F$TRNLNM("SYS$TIMEZONE_DIFFERENTIAL")
1054$ IF systz.NES.""
1055$ THEN
1056$ tzhour = F$INTEGER(systz)/3600
1057$ tzmins = F$INTEGER(systz)/60
1058$ tzminrem = tzmins - tzhour*60
1059$ IF tzminrem.lt.0 THEN tzminrem = -1*tzminrem !keeps !2ZL happy
1060$ IF tzhour.ge.0
1061$ THEN signothetime = "+"
1062$ IF tzhour.EQ.0.AND.tzminrem.EQ.0
1063$ THEN direction = "on GMT/"
1064$ ELSE direction = "east of "
1065$ ENDIF
1066$ ELSE signothetime = "-"
1067$ tzhour = -1*tzhour !keeps !UL happy
1068$ direction = "west of "
1069$ ENDIF
1070$ echo ""
97abc6ad
HM
1071$ echo "According to the setting of your ""SYS$TIMEZONE_DIFFERENTIAL"" (= ''systz')"
1072$ IF tzminrem.ne.0
1073$ THEN
1074$ tzspan = "''tzhour' hours & ''tzminrem' minutes"
1075$ ELSE
1076$ tzspan = "''tzhour' hours"
1077$ ENDIF
9b5c8979 1078$ bool_dflt = "y"
97abc6ad 1079$ echo "Your system is ''tzspan' ''direction'UTC in England."
9b5c8979 1080$ rp = "(''systz') Is this UTC Time Zone Offset correct? [''bool_dflt'] "
97abc6ad 1081$ GOSUB myread
9b5c8979 1082$ IF ans
97abc6ad
HM
1083$ THEN
1084$ tzneedset = "f"
1085$ tzd = systz
1086$ GOTO Beyond_TimeZone
1087$ ENDIF
1088$ ELSE
1089$ echo ""
97abc6ad
HM
1090$ echo4 """SYS$TIMEZONE_DIFFERENTIAL"" does not appear to be DEFINEd on your system"
1091$ ENDIF
1092$!
1093$TZSet:
1094$ echo ""
1095$ echo "Please tell me in hh:mm form what time offset from GMT/UTC in England"
146174a9 1096$ echo "you are. As an example Eastern (US) Standard Time is -5:00 offset, but"
97abc6ad
HM
1097$ echo "Eastern Daylight Time (summer) is -4:00 offset."
1098$ dflt = "0:00"
1099$ rp = "Enter the Time Zone offset: [''dflt'] "
1100$ GOSUB myread
1101$ ans = F$Edit(ans,"collapse,trim,uncomment,upcase")
1102$ IF ans.EQS."" THEN ans = dflt
1103$ tzhour = F$ELEMENT(0,":","''ans'") !first
1104$ IF tzhour.EQS."" THEN tzhour = 0
1105$ tzhour = F$INTEGER(tzhour)
1106$ tzminrem = F$ELEMENT(1,":","''ans'") !second
1107$ IF tzminrem.NES.""
1108$ THEN
1109$ tzminrem = F$INTEGER(tzminrem)
1110$ IF F$EXTRACT(0,1,"''ans'") .EQS. "-" THEN tzminrem = tzminrem * -1
1111$ ELSE
1112$ tzminrem = 0
1113$ ENDIF
1114$ tzmins = tzhour*60 + tzminrem
1115$ tzd = F$STRING(tzmins*60)
1116$ IF tzhour .GE. 0
1117$ THEN
1118$ signothetime = "+"
1119$ ELSE
1120$ tzhour = -1*tzhour !keeps !UL happy
1121$ signothetime = "-"
1122$ ENDIF
1123$ IF (tzmins.GT.MAX_TZO).OR.(tzmins.LT.MIN_TZO)
1124$ THEN
1125$ echo ""
1126$ echo "%Config-W-VMS-TIMERANGE, Response must be in the range -14:00 to 14:00."
1127$ goto TZSet
1128$ ENDIF
1129$!
1130$Beyond_TimeZone:
1131$ tz = f$fao("UTC!AS!UL:!2ZL",signothetime,tzhour,tzminrem)
1132$ cf_time = "''wkday' ''mon' ''mday' ''hour':''min':''sec' ''tz' ''year'"
1133$!
1134$!: determine the architecture name
570bb66e
JH
1135$! Note that DCL in VMS V5.4 does not have F$GETSYI("ARCH_NAME")
1136$! but does have F$GETSYI("HW_MODEL").
55315086
PP
1137$! Please try to use either archname .EQS. "VMS_VAX" or archname .EQS.
1138$! "VMS_AXP" from here on to allow cross-platform configuration (e.g.
1139$! configure a VAX build on an Alpha).
97abc6ad 1140$!
a50752f9 1141$ IF (F$GETSYI("HW_MODEL") .LT. 1024 .AND. F$GETSYI("HW_MODEL") .GT. 0)
97abc6ad
HM
1142$ THEN
1143$ archname = "VMS_VAX"
a50752f9 1144$ otherarch = "an Alpha or IA64"
08c7cbbb
GS
1145$ alignbytes="8"
1146$ arch_type = "ARCH-TYPE=__VAX__"
97abc6ad 1147$ ELSE
a50752f9
CB
1148$ IF (F$GETSYI("ARCH_TYPE") .EQ. 2)
1149$ THEN
1150$ archname = "VMS_AXP"
1151$ otherarch = "a VAX or IA64"
1152$ arch_type = "ARCH-TYPE=__AXP__"
1153$ ELSE
1154$ archname = "VMS_IA64"
1155$ otherarch = "a VAX or Alpha"
1156$ arch_type = "ARCH-TYPE=__IA64__"
1157$ ENDIF
08c7cbbb 1158$ alignbytes="8"
97abc6ad 1159$ ENDIF
9b5c8979 1160$ dflt = archname
97abc6ad
HM
1161$ rp = "What is your architecture name? [''archname'] "
1162$ GOSUB myread
1163$ IF ans.NES.""
1164$ THEN
1165$ ans = F$EDIT(ans,"COLLAPSE, UPCASE")
1166$ IF (ans.NES.archname) !.AND.knowitall
1167$ THEN
1168$ echo4 "I'll go with ''archname' anyway..."
1169$ ENDIF
1170$ ENDIF
9b5c8979 1171$ bool_dflt = "n"
570bb66e
JH
1172$ vms_prefix = "perl_root"
1173$ vms_prefixup = F$EDIT(vms_prefix,"UPCASE")
9b5c8979 1174$ rp = "Will you be sharing your ''vms_prefixup' with ''otherarch'? [''bool_dflt'] "
146174a9 1175$ GOSUB myread
55315086 1176$ IF .NOT. ans
146174a9
CB
1177$ THEN
1178$ sharedperl = "N"
1179$ ELSE
1180$ sharedperl = "Y"
1181$ IF (archname.EQS."VMS_AXP")
97abc6ad 1182$ THEN
97abc6ad
HM
1183$ macros = macros + """AXE=1"","
1184$ ENDIF
a50752f9
CB
1185$ IF (archname.EQS."VMS_IA64")
1186$ THEN
1187$ macros = macros + """IXE=1"","
1188$ ENDIF
97abc6ad
HM
1189$ ENDIF
1190$!
1191$!: is AFS running? !sfn
1192$!: decide how portable to be. Allow command line overrides. !sfn
1193$!: set up shell script to do ~ expansion !sfn
1194$!: expand filename !sfn
1195$!: now set up to get a file name !sfn
1196$!
570bb66e
JH
1197$ IF F$TYPE(prefix) .EQS. ""
1198$ THEN
1199$ prefix = F$ENVIRONMENT("DEFAULT") - ".UU]" + "]"
9b5c8979 1200$ prefix = F$PARSE(prefix,,,,"NO_CONCEAL") - "][" - "000000." - ".000000" - ".;"
570bb66e 1201$ prefixbase = prefix - "]"
fe05d1a7
PK
1202$! Add _ROOT to make install PERL_ROOT differ from build directory.
1203$ prefix = prefixbase + "_ROOT.]"
570bb66e 1204$ ENDIF
e8e09534
PP
1205$ ! more redundant scrubbing of values
1206$ prefix = prefix - "000000."
1207$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN prefix = prefix - "]" + ".]"
570bb66e 1208$ src = prefix
f53b4005
CB
1209$!: determine root of directory hierarchy where package will be installed.
1210$ dflt = prefix
1211$ IF .NOT.silent
1212$ THEN
1213$ echo ""
1214$ echo "By default, ''package' will be installed in ''dflt', pod"
570bb66e 1215$ echo "pages under ''prefixbase'.LIB.POD], etc..., i.e. with ''dflt' as prefix for"
f53b4005 1216$ echo "all installation directories."
570bb66e 1217$ echo "On ''osname' the prefix is used to DEFINE the ''vms_prefixup' prior to installation"
f53b4005
CB
1218$ echo "as well as during subsequent use of ''package' via ''packageup'_SETUP.COM."
1219$ ENDIF
570bb66e 1220$ rp = "Installation prefix to use (for ''vms_prefixup')? [ ''dflt' ] "
f53b4005
CB
1221$ GOSUB myread
1222$ IF ans.NES.""
1223$ THEN
1224$ prefix = ans
1225$ IF F$LOCATE(".]",ans) .EQ. F$LENGTH(ans) THEN prefix = prefix - "]" + ".]"
1226$ ELSE
1227$ prefix = dflt
1228$ ENDIF
570bb66e 1229$ perl_root = prefix
f53b4005
CB
1230$!
1231$! Check here for pre-existing PERL_ROOT.
1232$! -> ask if removal desired.
1233$! Check here for writability of requested PERL_ROOT if it is not the default (cwd).
1234$! -> recommend letting PERL_ROOT be PERL_SRC if requested PERL_ROOT is not writable.
1235$!
dab31494 1236$ tmp = perl_root - ".]" + "]"
9b5c8979 1237$ dflt = f$parse(tmp,,,,)
dab31494
PP
1238$ IF dflt .eqs. ""
1239$ THEN
1240$ echo4 "''tmp' does not yet exist."
1241$! create/directory 'tmp'
1242$ ELSE
1243$ echo4 "''tmp' already exists."
1244$ ENDIF
dab31494 1245$!
97abc6ad 1246$ vms_skip_install = "true"
9b5c8979 1247$ bool_dflt = "y"
97abc6ad 1248$! echo ""
9b5c8979 1249$ rp = "Skip the remaining """"where install"""" questions? [''bool_dflt'] "
97abc6ad 1250$ GOSUB myread
9b5c8979 1251$ IF (.NOT.ans) THEN vms_skip_install = "false"
97abc6ad
HM
1252$ IF (.NOT.vms_skip_install)
1253$ THEN
97abc6ad
HM
1254$!
1255$!: set the prefixit variable, to compute a suitable default value
1256$!
1257$!: determine where private library files go
1258$!: Usual default is /usr/local/lib/perl5. Also allow things like
1259$!: /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
1260$ IF .NOT.silent
7558ebc2
PP
1261$ THEN
1262$ TYPE SYS$INPUT:
1263$ DECK
97abc6ad
HM
1264
1265There are some auxiliary files for perl5 that need to be put into a
1266private library directory that is accessible by everyone.
7558ebc2 1267$ EOD
97abc6ad 1268$ ENDIF
570bb66e
JH
1269$ IF F$TYPE(privlib) .NES. ""
1270$ THEN dflt = privlib
1271$ ELSE dflt = "''vms_prefix':[lib]"
1272$ ENDIF
97abc6ad
HM
1273$ rp = "Pathname where the private library files will reside? "
1274$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1275$ GOSUB myread
9b5c8979 1276$ privlib = ans
97abc6ad 1277$!
f53b4005 1278$ ENDIF !%Config-I-VMS, skip remaining "where install" questions
97abc6ad 1279$!
a3bd614a
PP
1280$ IF F$TYPE(perl_symbol) .EQS. "" THEN perl_symbol := true
1281$ IF F$TYPE(perl_verb) .EQS. "" THEN perl_verb = ""
1282$ IF perl_symbol
9b5c8979
JH
1283$ THEN bool_dflt = "y"
1284$ ELSE bool_dflt = "n"
a3bd614a 1285$ ENDIF
86fced14
CB
1286$ IF .NOT.silent
1287$ THEN
1288$ echo ""
570bb66e
JH
1289$ echo "You may choose to write ''packageup'_SETUP.COM to assign a foreign"
1290$ echo "symbol to invoke ''package', which is the usual method."
1291$ echO "If you do not do so then you would need a DCL command verb at the"
1292$ echo "process or the system wide level."
86fced14 1293$ ENDIF
9b5c8979 1294$ rp = "Invoke perl as a global symbol foreign command? [''bool_dflt'] "
86fced14 1295$ GOSUB myread
a3bd614a 1296$ IF (.NOT.ans) THEN perl_symbol = "false"
86fced14
CB
1297$!
1298$ IF (.NOT.perl_symbol)
1299$ THEN
a3bd614a 1300$ IF perl_verb .EQS. "DCLTABLES"
9b5c8979
JH
1301$ THEN bool_dflt = "n"
1302$ ELSE bool_dflt = "y"
a3bd614a 1303$ ENDIF
86fced14
CB
1304$ IF .NOT.silent
1305$ THEN
1306$ echo ""
570bb66e
JH
1307$ echo "Since you won't be using a symbol you must choose to put the ''packageup'"
1308$ echo "verb in a per-process table or in the system wide DCLTABLES (which"
1309$ echo "would require write privilege)."
86fced14 1310$ ENDIF
9b5c8979 1311$ rp = "Invoke perl as a per process command verb? [ ''bool_dflt' ] "
86fced14 1312$ GOSUB myread
a3bd614a 1313$ IF (.NOT.ans)
86fced14
CB
1314$ THEN perl_verb = "DCLTABLES"
1315$ ELSE perl_verb = "PROCESS"
1316$ ENDIF
1317$ ENDIF ! (.NOT.perl_symbol)
1318$!
97abc6ad 1319$!: set the base revision
08c7cbbb
GS
1320$ baserev="5.0"
1321$ revision = baserev - ".0"
97abc6ad
HM
1322$!: get the patchlevel
1323$ echo ""
570bb66e 1324$ echo4 "Getting the current patchlevel..."
5cda9808
CB
1325$ patchlevel="0"
1326$ subversion="0"
1327$ api_revision="0"
1328$ api_version="0"
1329$ api_subversion="0"
1330$ perl_patchlevel="0"
97abc6ad
HM
1331$ patchlevel_h = F$SEARCH("[-]patchlevel.h")
1332$ IF (patchlevel_h.NES."")
1333$ THEN
1334$ got_patch = "false"
1335$ got_sub = "false"
08c7cbbb
GS
1336$ got_api_revision = "false"
1337$ got_api_version = "false"
1338$ got_api_subversion = "false"
9ec25520 1339$ got_perl_patchlevel= "false"
97abc6ad
HM
1340$ OPEN/READONLY CONFIG 'patchlevel_h'
1341$Patchlevel_h_loop:
570bb66e 1342$ READ/END_Of_File=Close_patch/ERROR=Close_patch CONFIG line
cceca5ed 1343$ IF ((F$LOCATE("#define PERL_VERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_patch))
97abc6ad
HM
1344$ THEN
1345$ line = F$EDIT(line,"COMPRESS, TRIM")
cc391245 1346$ patchlevel = F$ELEMENT(2," ",line)
97abc6ad
HM
1347$ got_patch = "true"
1348$ ENDIF
cceca5ed 1349$ IF ((F$LOCATE("#define PERL_SUBVERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_sub))
97abc6ad
HM
1350$ THEN
1351$ line = F$EDIT(line,"COMPRESS, TRIM")
cc391245 1352$ subversion = F$ELEMENT(2," ",line)
97abc6ad
HM
1353$ got_sub = "true"
1354$ ENDIF
08c7cbbb
GS
1355$ IF ((F$LOCATE("#define PERL_API_REVISION",line).NE.F$LENGTH(line)).AND.(.NOT.got_api_revision))
1356$ THEN
1357$ line = F$EDIT(line,"COMPRESS, TRIM")
1358$ api_revision = F$ELEMENT(2," ",line)
1359$ got_api_revision = "true"
1360$ ENDIF
1361$ IF ((F$LOCATE("#define PERL_API_VERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_api_version))
1362$ THEN
1363$ line = F$EDIT(line,"COMPRESS, TRIM")
1364$ api_version = F$ELEMENT(2," ",line)
1365$ got_api_version = "true"
1366$ ENDIF
1367$ IF ((F$LOCATE("#define PERL_API_SUBVERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_api_subversion))
1368$ THEN
1369$ line = F$EDIT(line,"COMPRESS, TRIM")
1370$ api_subversion = F$ELEMENT(2," ",line)
1371$ got_api_subversion = "true"
1372$ ENDIF
9ec25520
CB
1373$ IF ((F$LOCATE("""DEVEL",line).NE.F$LENGTH(line)).AND.(.NOT.got_perl_patchlevel))
1374$ THEN
1375$ line = F$EDIT(line,"COMPRESS, TRIM")
1376$ perl_patchlevel = F$ELEMENT(1,"""",line)
1377$ perl_patchlevel = perl_patchlevel - "DEVEL"
1378$ got_perl_patchlevel = "true"
1379$ ENDIF
c4ac6101
CB
1380$ IF ((F$LOCATE("""SMOKE",line).NE.F$LENGTH(line)).AND.(.NOT.got_perl_patchlevel))
1381$ THEN
1382$ line = F$EDIT(line,"COMPRESS, TRIM")
1383$ perl_patchlevel = F$ELEMENT(1,"""",line)
1384$ perl_patchlevel = perl_patchlevel - "SMOKE"
1385$ got_perl_patchlevel = "true"
1386$ ENDIF
1387$ IF ((F$LOCATE("""MAINT",line).NE.F$LENGTH(line)).AND.(.NOT.got_perl_patchlevel))
1388$ THEN
1389$ line = F$EDIT(line,"COMPRESS, TRIM")
1390$ perl_patchlevel = F$ELEMENT(1,"""",line)
1391$ perl_patchlevel = perl_patchlevel - "MAINT"
1392$ got_perl_patchlevel = "true"
1393$ ENDIF
cd30eb94
PP
1394$ IF (.NOT. got_patch) .OR. -
1395 (.NOT. got_sub) .OR. -
1396 (.NOT. got_api_revision) .OR. -
1397 (.NOT. got_api_version) .OR. -
9ec25520
CB
1398 (.NOT. got_api_subversion) .OR. -
1399 (.NOT. got_perl_patchlevel) -
cd30eb94 1400 THEN GOTO Patchlevel_h_loop
97abc6ad
HM
1401$Close_patch:
1402$ CLOSE CONFIG
97abc6ad 1403$ ENDIF
8c541774
CB
1404$!
1405$ IF F$SEARCH("[-].patch") .NES. ""
1406$ THEN
1407$ SET NOON
1408$ OPEN/READ PATCH [-].patch
1409$ READ PATCH line
1410$ CLOSE PATCH
1411$ tmp = F$EDIT(line,"COLLAPSE")
1412$ SET ON
1413$ IF tmp .GT. perl_patchlevel then perl_patchlevel = tmp
1414$ ENDIF
1415$!
9ec25520
CB
1416$ version_patchlevel_string = "version ''patchlevel' subversion ''subversion'"
1417$ IF got_perl_patchlevel .AND. perl_patchlevel .NES. "0"
97abc6ad 1418$ THEN
9ec25520 1419$ version_patchlevel_string = "''version_patchlevel_string' patch ''perl_patchlevel'"
97abc6ad 1420$ ENDIF
9ec25520 1421$ echo "(You have ''package' ''version_patchlevel_string'.)"
97abc6ad 1422$!
08c7cbbb 1423$ version = revision + "_" + patchlevel + "_" + subversion
97abc6ad
HM
1424$!
1425$ IF (.NOT.vms_skip_install)
1426$ THEN
97abc6ad
HM
1427$!: set the prefixup variable, to restore leading tilde escape !sfn
1428$!
1429$!: determine where public architecture dependent libraries go
1430$ IF (.NOT.silent)
1431$ THEN
1432$ echo ""
1433$ echo "''package' contains architecture-dependent library files. If you are"
1434$ ENDIF
1435$ IF (.NOT.silent)
7558ebc2
PP
1436$ THEN
1437$ TYPE SYS$INPUT:
1438$ DECK
97abc6ad
HM
1439sharing libraries in a heterogeneous environment, you might store
1440these files in a separate location. Otherwise, you can just include
1441them with the rest of the public library files.
7558ebc2 1442$ EOD
97abc6ad 1443$ ENDIF
570bb66e
JH
1444$ IF F$TYPE(archlib) .NES. ""
1445$ THEN dflt = archlib
1446$ ELSE dflt = privlib - "]" + "." + archname + "." + version + "]"
1447$ ENDIF
97abc6ad
HM
1448$ rp = "Where do you want to put the public architecture-dependent libraries? "
1449$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1450$ GOSUB myread
9b5c8979 1451$ archlib = ans
97abc6ad 1452$!
97abc6ad 1453$ ENDIF !%Config-I-VMS, skip "where install" questions
570bb66e 1454$!
97abc6ad 1455$! This quotation from Configure has to be included on VMS:
570bb66e 1456$!
97abc6ad 1457$ TYPE SYS$INPUT:
7558ebc2 1458$ DECK
97abc6ad
HM
1459
1460There is, however, a strange, musty smell in the air that reminds me of
1461something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
7558ebc2 1462$ EOD
97abc6ad
HM
1463$ IF (.NOT.vms_skip_install)
1464$ THEN
1465$!: it so happens the Eunice I know will not run shell scripts in Unix format
1466$!
1467$!: see if setuid scripts can be secure !sfn
1468$!: now see if they want to do setuid emulation !sfn
1469$!
1470$!: determine where site specific libraries go.
1471$ IF .NOT.silent
7558ebc2
PP
1472$ THEN
1473$ TYPE SYS$INPUT:
1474$ DECK
97abc6ad
HM
1475
1476The installation process will also create a directory for
1477site-specific extensions and modules. Some users find it convenient
1478to place all local files in this directory rather than in the main
1479distribution directory.
7558ebc2 1480$ EOD
97abc6ad 1481$ ENDIF
570bb66e
JH
1482$ IF F$TYPE(sitelib) .NES. ""
1483$ THEN dflt = sitelib
1484$ ELSE dflt = privlib - "]" + ".SITE_PERL]"
1485$ ENDIF
97abc6ad
HM
1486$ rp = "Pathname for the site-specific library files? "
1487$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1488$ GOSUB myread
9b5c8979 1489$ sitelib = ans
97abc6ad
HM
1490$!
1491$!: determine where site specific architecture-dependent libraries go.
1492$ IF .NOT.silent
1493$ THEN TYPE SYS$INPUT:
7558ebc2 1494$ DECK
97abc6ad
HM
1495
1496The installation process will also create a directory for
1497architecture-dependent site-specific extensions and modules.
7558ebc2 1498$ EOD
97abc6ad 1499$ ENDIF
570bb66e
JH
1500$ IF F$TYPE(sitearch) .NES. ""
1501$ THEN dflt = sitearch
1502$ ELSE dflt = sitelib - "]" + "." + archname + "]"
1503$ ENDIF
97abc6ad
HM
1504$ rp = "Pathname for the site-specific architecture-dependent library files? "
1505$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1506$ GOSUB myread
9b5c8979 1507$ sitearch = ans
97abc6ad
HM
1508$!
1509$!: determine where old public architecture dependent libraries might be
1510$!
1511$!: determine where public executables go
570bb66e
JH
1512$ IF F$TYPE(bin) .NES. ""
1513$ THEN dflt = bin
1514$! ELSE dflt = prefix - ".]" + ".BIN]"
96021e87 1515$ ELSE dflt = "/''vms_prefix'"
570bb66e 1516$ ENDIF
97abc6ad
HM
1517$ rp = "Pathname where the public executables will reside? "
1518$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1519$ GOSUB myread
9b5c8979 1520$ bin = ans
97abc6ad 1521$!
ec18bc92
CB
1522$!: determine where add-on public executables go
1523$ IF F$TYPE(sitebin) .NES. ""
1524$ THEN dflt = sitebin
1525$ ELSE dflt = "''vms_prefix':[bin.''archname']"
1526$ ENDIF
1527$ rp = "Pathname where the add-on public executables should be installed? "
1528$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
1529$ GOSUB myread
1530$ sitebin = ans
1531$!
97abc6ad
HM
1532$!: determine where manual pages are on this system
1533$!: What suffix to use on installed man pages
1534$!: see if we can have long filenames
1535$!: determine where library module manual pages go
1536$!: What suffix to use on installed man pages
1537$!: see what memory models we can support
1538$!
570bb66e
JH
1539$ ELSE ! skipping "where install" questions, we must set some symbols
1540$ IF F$TYPE(archlib).EQS."" THEN -
1541 archlib="''vms_prefix':[lib.''archname'.''version']"
1542$ IF F$TYPE(bin) .EQS. "" THEN -
96021e87 1543 bin="/''vms_prefix'"
570bb66e
JH
1544$ IF F$TYPE(privlib) .EQS. "" THEN -
1545 privlib ="''vms_prefix':[lib]"
1546$ IF F$TYPE(sitearch) .EQS. "" THEN -
1547 sitearch="''vms_prefix':[lib.site_perl.''archname']"
1548$ IF F$TYPE(sitelib) .EQS. "" THEN -
1549 sitelib ="''vms_prefix':[lib.site_perl]"
ec18bc92
CB
1550$ IF F$TYPE(sitebin) .EQS. "" THEN -
1551 sitebin="''vms_prefix':[bin.''archname']"
97abc6ad
HM
1552$ ENDIF !%Config-I-VMS, skip "where install" questions
1553$!
570bb66e
JH
1554$! These derived locations can be set whether we've opted to
1555$! skip the where install questions or not.
1556$!
1557$ IF F$TYPE(archlibexp) .EQS. "" THEN -
1558 archlibexp="''vms_prefix':[lib.''archname'.''version']"
1559$ IF F$TYPE(binexp) .EQS. "" THEN -
1560 binexp ="''vms_prefix':[000000]"
1561$ IF F$TYPE(builddir) .EQS. "" THEN -
1562 builddir ="''vms_prefix':[000000]"
1563$ IF F$TYPE(installarchlib) .EQS. "" THEN -
1564 installarchlib="''vms_prefix':[lib.''archname'.''version']"
1565$ IF F$TYPE(installbin) .EQS. "" THEN -
1566 installbin ="''vms_prefix':[000000]"
1567$ IF F$TYPE(installscript) .EQS. "" THEN -
1568 installscript ="''vms_prefix':[utils]"
1569$ IF F$TYPE(installman1dir) .EQS. "" THEN -
1570 installman1dir ="''vms_prefix':[man.man1]"
1571$ IF F$TYPE(installman3dir) .EQS. "" THEN -
1572 installman3dir ="''vms_prefix':[man.man3]"
1573$ IF F$TYPE(installprivlib) .EQS. "" THEN -
1574 installprivlib ="''vms_prefix':[lib]"
1575$ IF F$TYPE(installsitearch) .EQS. "" THEN -
1576 installsitearch="''vms_prefix':[lib.site_perl.''archname']"
1577$ IF F$TYPE(installsitelib) .EQS. "" THEN -
1578 installsitelib ="''vms_prefix':[lib.site_perl]"
1579$ IF F$TYPE(oldarchlib) .EQS. "" THEN -
1580 oldarchlib="''vms_prefix':[lib.''archname']"
1581$ IF F$TYPE(oldarchlibexp) .EQS. "" THEN -
1582 oldarchlibexp="''vms_prefix':[lib.''archname']"
1583$ IF F$TYPE(privlibexp) .EQS. "" THEN -
1584 privlibexp ="''vms_prefix':[lib]"
f688e3ac
CB
1585$ IF F$TYPE(scriptdir) .EQS. "" THEN -
1586 scriptdir ="''vms_prefix':[utils]"
570bb66e
JH
1587$ IF F$TYPE(sitearchexp) .EQS. "" THEN -
1588 sitearchexp ="''vms_prefix':[lib.site_perl.''archname']"
1589$ IF F$TYPE(sitelib_stem) .EQS. "" THEN -
1590 sitelib_stem ="''vms_prefix':[lib.site_perl]"
1591$ IF F$TYPE(sitelibexp) .EQS. "" THEN -
1592 sitelibexp ="''vms_prefix':[lib.site_perl]"
1593$!
97abc6ad 1594$!: see if we need a special compiler
01792a70 1595$! cc_list = "cc/decc|gcc" !%Config-I-VMS, compiler symbols/commands
97abc6ad
HM
1596$!
1597$ nocc = "f"
1598$ vms_cc_dflt = ""
1599$ vms_cc_available = ""
1600$!
1601$ OPEN/WRITE CONFIG ccvms.c
570bb66e 1602$ WRITE CONFIG "#ifdef __DECC"
97abc6ad 1603$ WRITE CONFIG "#include <stdlib.h>" !DECC is sooo picky
570bb66e 1604$ WRITE CONFIG "#endif"
97abc6ad
HM
1605$ WRITE CONFIG "#include <stdio.h>"
1606$ WRITE CONFIG "int main() {"
1607$ WRITE CONFIG "#ifdef __DECC"
1608$ WRITE CONFIG " printf(""/DECC\n"");"
1609$ WRITE CONFIG "#else"
1610$ WRITE CONFIG " printf(""/VAXC\n"");"
1611$ WRITE CONFIG "#endif"
1612$ WRITE CONFIG " exit(0);"
1613$ WRITE CONFIG "}"
1614$ CLOSE CONFIG
1615$!
41cbbefa
CB
1616$ SET NOON
1617$ DEFINE/USER_MODE SYS$ERROR _NLA0:
1618$ DEFINE/USER_MODE SYS$OUTPUT _NLA0:
97abc6ad
HM
1619$ cc/NoObj/list=ccvms.lis ccvms.c
1620$ tmp = $status
41cbbefa 1621$ SET ON
97abc6ad 1622$ IF (silent) THEN GOSUB Shut_up
97abc6ad
HM
1623$ IF tmp.NE.%X10B90001
1624$ THEN
1625$ IF tmp.NE.%X10000001
1626$ THEN
1627$ nocc = "t" !%X10000001 is return from gcc
1628$ GOTO Gcc_initial_check
1629$ ENDIF
1630$ ENDIF
1631$!
1632$ GOSUB List_Parse
1633$ IF .NOT.silent THEN echo ""
570bb66e 1634$ echo "Default ""cc"" is ''line' ''archsufx' ''F$GETSYI("VERSION")'"
97abc6ad
HM
1635$ IF F$LOCATE("VAX",line).NE.F$LENGTH(line)
1636$ THEN
97abc6ad
HM
1637$ IF .NOT.silent
1638$ THEN
570bb66e 1639$ echo "Will try cc/decc..."
97abc6ad 1640$ ENDIF
41cbbefa 1641$ SET NOON
570bb66e
JH
1642$ DEFINE/USER_MODE SYS$ERROR NL:
1643$ DEFINE/USER_MODE SYS$OUTPUT NL:
97abc6ad
HM
1644$ cc/decc/NoObj/list=ccvms.lis ccvms.c
1645$ tmp = $status
97abc6ad
HM
1646$ SET ON
1647$ IF (silent) THEN GOSUB Shut_up
1648$ IF tmp.NE.%X10B90001
1649$ THEN
570bb66e 1650$ echo "Apparently you don't have that one."
97abc6ad
HM
1651$ ELSE
1652$ GOSUB List_parse
570bb66e 1653$ echo "You also have: ''line' ''archsufx' ''F$GETSYI("VERSION")'"
97abc6ad
HM
1654$ vms_cc_available = vms_cc_available + "cc/decc "
1655$ ENDIF
1656$ ELSE
a50752f9 1657$ IF (F$LOCATE("DEC",line).NE.F$LENGTH(line)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line)) -
345d1b6f 1658 .or.(F$LOCATE("HP",F$EDIT(line,"UPCASE")).NE.F$LENGTH(line))
97abc6ad
HM
1659$ THEN
1660$ vms_cc_dflt = "/decc"
1661$ vms_cc_available = vms_cc_available + "cc/decc "
97abc6ad
HM
1662$ ENDIF
1663$ ENDIF
1664$!
1665$Gcc_initial_check:
570bb66e 1666$ echo "Checking for gcc"
97abc6ad 1667$ OPEN/WRITE CONFIG gccvers.lis
41cbbefa 1668$ SET NOON
570bb66e
JH
1669$ DEFINE/USER_MODE SYS$ERROR CONFIG
1670$ DEFINE/USER_MODE SYS$OUTPUT CONFIG
97abc6ad
HM
1671$ 'gcc_symbol'/noobj/version _nla0:
1672$ tmp = $status
41cbbefa 1673$ SET ON
97abc6ad
HM
1674$ IF (silent) THEN GOSUB Shut_up
1675$ CLOSE CONFIG
1676$ IF (tmp.NE.%X10000001).and.(tmp.ne.%X00030001)
1677$ THEN
7558ebc2 1678$ echo "Symbol ""''gcc_symbol'"" is not defined. I guess you do not have it."
570bb66e
JH
1679$ DELETE/NOLOG/NOCONFIRM gccvers.lis;
1680$ GOTO Cxx_initial_check
97abc6ad
HM
1681$ ENDIF
1682$ OPEN/READ CONFIG gccvers.lis
1683$GCC_List_Read:
1684$ READ/END_OF_FILE=GCC_List_End CONFIG line
1685$ GOTO GCC_List_Read
1686$GCC_List_End:
1687$ CLOSE CONFIG
1688$ echo line
1689$ vms_cc_available = vms_cc_available + "''gcc_symbol' "
1690$ DELETE/NOLOG/NOCONFIRM gccvers.lis;
1691$!
570bb66e
JH
1692$Cxx_initial_check:
1693$!
1694$! Do note that [vms]perl source files have a ways to go before they will
1695$! compile under CXX.
7558ebc2
PP
1696$! In order to test Configure.com with CXX invoke it with "-Dtry_cxx" on
1697$! the command line.
570bb66e 1698$!
7558ebc2
PP
1699$ IF F$TYPE(try_cxx) .EQS. "" THEN try_cxx := n
1700$ IF try_cxx .OR. try_cxx .EQS. "define"
570bb66e
JH
1701$!
1702$ THEN
1703$!
1704$ echo "Checking for CXX..."
1705$ OPEN/WRITE CONFIG ccvms.c
1706$ WRITE CONFIG "#include <iostream>"
1707$ WRITE CONFIG "int main() {"
1708$ WRITE CONFIG "#ifdef __DECCXX"
1709$ WRITE CONFIG " cout << __DECCXX, endl;"
1710$ WRITE CONFIG "#else"
1711$ WRITE CONFIG " cout << 0,endl;"
1712$ WRITE CONFIG "#endif"
1713$! Todo: add G++ identifier check ??
1714$ WRITE CONFIG " return(0);"
1715$ WRITE CONFIG "}"
1716$ CLOSE CONFIG
1717$ SET NOON
1718$ DEFINE/USER_MODE SYS$OUTPUT NL:
1719$ DEFINE/USER_MODE SYS$ERROR NL:
1720$ cxx ccvms.c
1721$ tmp = $status
1722$ SET ON
1723$! success $status with:
1724$! DEC C++ V1.1-001 on VMS VAX V5.5-2
1725$! DEC C++ V5.6-013 on OpenVMS VAX V7.1
1726$! DEC C++ V6.1-003 on OpenVMS Alpha V7.1
1727$! Compaq C++ V6.2-016 for OpenVMS Alpha V7.2-1
1728$ IF tmp .eq. %X15F60001
1729$ THEN
1730$! Which linker?
1731$ SET NOON
1732$ DEFINE/USER_MODE SYS$OUTPUT NL:
1733$ DEFINE/USER_MODE SYS$ERROR NL:
96021e87 1734$ link/nodebug ccvms.obj
570bb66e
JH
1735$ tmp = $status
1736$ SET ON
1737$ ! success $status with:
1738$ ! link && DEC C++ V1.1-001 on VMS VAX V5.5-2
1739$ ! link && DEC C++ V5.6-013 on OpenVMS VAX V7.1
1740$ IF tmp .eq. %X10000001
1741$ THEN
1742$ ld_try = "Link"
1743$ vms_cc_available = vms_cc_available + "cxx "
1744$ echo "CXX and LINK are available."
1745$ ELSE
1746$ IF F$SEARCH("ccvms.exe") .NES. "" THEN DELETE/NOLOG/NOCONFIRM ccvms.exe;
1747$ SET NOON
1748$ DEFINE/USER_MODE SYS$OUTPUT NL:
1749$ DEFINE/USER_MODE SYS$ERROR NL:
1750$ cxxlink ccvms.obj
1751$ tmp = $status
1752$ SET ON
1753$ ! success $status with:
1754$ ! cxxlink && DEC C++ V6.1-003 on OpenVMS Alpha V7.1
1755$ ! cxxlink && Compaq C++ V6.2-016 for OpenVMS Alpha V7.2-1
1756$ IF tmp .eq. %X10000001
1757$ THEN
1758$ ld_try = "cxxlink"
1759$ vms_cc_available = vms_cc_available + "cxx "
1760$ echo "CXX and CXXLINK are available."
1761$ ENDIF
1762$ ENDIF
1763$ IF F$SEARCH("ccvms.exe") .NES. "" THEN DELETE/NOLOG/NOCONFIRM ccvms.exe;
1764$ ELSE
1765$ echo "Nope."
1766$ ENDIF
1767$ DELETE/NOLOG/NOCONFIRM ccvms.c;
1768$ IF F$SEARCH("ccvms.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM ccvms.obj;
1769$ CALL Cxx_demangler_cleanup
1770$!
1771$ ENDIF ! 1 .eq. 0 or 1 .eq. 1
1772$!
97abc6ad
HM
1773$CC_Cleanup:
1774$ DELETE/NOLOG/NOCONFIRM ccvms.*;
1775$CC_Desired:
1776$!: see if we need a special compiler
1777$! echo ""
570bb66e 1778$ echo "Available compiler(s):"
97abc6ad
HM
1779$ echo "( ''vms_cc_available')"
1780$ IF .NOT.nocc
1781$ THEN
1782$ dflt = "cc''vms_cc_dflt'" !-> "cc" in case first compile went OK
1783$ ELSE
1784$ dflt = gcc_symbol
1785$ ENDIF
1786$ rp = "Use which C compiler? [''dflt'] "
1787$ GOSUB myread
1788$ IF ans.NES.""
1789$ THEN
1790$ ans = F$EDIT(ans,"TRIM, COMPRESS, LOWERCASE")
1791$ Mcc = ans
a50752f9
CB
1792$ IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans)) -
1793 .or.(F$LOCATE("hp",ans).NE.F$LENGTH(ans))
97abc6ad
HM
1794$ THEN
1795$ Mcc = "cc/decc"
414b89cc
CB
1796$! CPQ ?
1797$ ccname := DEC
429a5e67 1798$ C_COMPILER_Replace = "CC=cc=''Mcc'"
97abc6ad 1799$ ENDIF
570bb66e
JH
1800$ IF F$LOCATE("cxx",F$EDIT(ans,"COLLAPSE,LOWERCASE")) .NE. F$LENGTH(ans)
1801$ THEN
1802$ Mcc = "cxx"
414b89cc 1803$ ccname := CXX
570bb66e 1804$ ld = ld_try
7558ebc2
PP
1805$ C_COMPILER_Replace = "CC=cc=''Mcc'"
1806$ ELSE ! Not_cxx
1807$ IF Mcc.NES.dflt
97abc6ad 1808$ THEN
7558ebc2
PP
1809$ IF F$LOCATE("dec",dflt) .NE. F$LENGTH(dflt) .or. -
1810 F$LOCATE("compaq",dflt) .NE. F$LENGTH(dflt)
1811$ THEN
1812$ C_COMPILER_Replace = "CC=cc=''Mcc'"
1813$ ELSE
414b89cc 1814$ ccname := DEC
7558ebc2
PP
1815$ ENDIF
1816$ ELSE
1817$ IF Mcc .EQS. "cc/decc"
1818$ THEN
414b89cc 1819$ ccname := DEC
7558ebc2
PP
1820$ C_COMPILER_Replace = "CC=cc=''Mcc'"
1821$ ENDIF
97abc6ad
HM
1822$ ENDIF
1823$ ENDIF
1824$ ELSE
1825$ Mcc = dflt
1826$ IF Mcc .EQS. "cc/decc"
1827$ THEN
414b89cc 1828$ ccname := DEC
429a5e67 1829$ C_COMPILER_Replace = "CC=cc=''Mcc'"
97abc6ad 1830$ ENDIF
97abc6ad
HM
1831$ IF Mcc .EQS. "gcc"
1832$ THEN
414b89cc 1833$ ccname := GCC
429a5e67 1834$ C_COMPILER_Replace = "CC=cc=''Mcc'"
97abc6ad
HM
1835$ ENDIF
1836$ ENDIF
1837$Decc_Version_check:
570bb66e 1838$ ccversion=""
414b89cc 1839$ IF ccname .EQS. "DEC"
97abc6ad
HM
1840$ THEN
1841$ echo ""
7558ebc2 1842$ echo4 "Checking for the Dec C version number..."
97abc6ad
HM
1843$ OPEN/WRITE CONFIG deccvers.c
1844$ WRITE CONFIG "#include <stdlib.h>" !DECC is sooo picky
1845$ WRITE CONFIG "#include <stdio.h>"
1846$ WRITE CONFIG "int main() {"
1847$ WRITE CONFIG "#ifdef __DECC"
1848$ WRITE CONFIG "#ifdef __DECC_VER"
1849$ WRITE CONFIG " printf(""%i\n"", __DECC_VER);"
1850$ WRITE CONFIG "#else"
1851$ WRITE CONFIG " printf(""%i\n"", ""1"");"
1852$ WRITE CONFIG "#endif"
1853$ WRITE CONFIG "#endif"
1854$ WRITE CONFIG " exit(0);"
1855$ WRITE CONFIG "}"
1856$ CLOSE CONFIG
570bb66e
JH
1857$ SET NOON
1858$ DEFINE/USER_MODE SYS$ERROR NL:
1859$ DEFINE/USER_MODE SYS$OUTPUT NL:
97abc6ad
HM
1860$ 'Mcc' deccvers.c
1861$ tmp = $status
97abc6ad 1862$ IF (silent) THEN GOSUB Shut_up
570bb66e
JH
1863$ DEFINE/USER_MODE SYS$ERROR NL:
1864$ DEFINE/USER_MODE SYS$OUTPUT NL:
96021e87 1865$ link/nodebug deccvers.obj
97abc6ad 1866$ tmp = $status
97abc6ad
HM
1867$ IF (silent) THEN GOSUB Shut_up
1868$ OPEN/WRITE CONFIG deccvers.out
570bb66e
JH
1869$ DEFINE/USER_MODE SYS$ERROR CONFIG
1870$ DEFINE/USER_MODE SYS$OUTPUT CONFIG
97abc6ad
HM
1871$ mcr []deccvers.exe
1872$ tmp = $status
570bb66e 1873$ SET ON
97abc6ad 1874$ CLOSE CONFIG
97abc6ad
HM
1875$ IF (silent) THEN GOSUB Shut_up
1876$ OPEN/READ CONFIG deccvers.out
1877$ READ/END_OF_FILE=Dec_c_cleanup CONFIG line
1878$Dec_c_cleanup:
1879$ CLOSE CONFIG
97abc6ad 1880$ echo "You are using Dec C ''line'"
570bb66e
JH
1881$ ccversion = line
1882$ Dec_C_Version = F$INTEGER(line)
c5b10721 1883$ IF Dec_C_Version .GE. 60200000 .AND. archname .NES. "VMS_VAX"
570bb66e
JH
1884$ THEN
1885$ echo4 "adding /NOANSI_ALIAS qualifier to ccflags."
1886$ ccflags = ccflags + "/NOANSI_ALIAS"
1887$ ENDIF
1888$ DELETE/NOLOG/NOCONFIRM deccvers.*;
97abc6ad 1889$ ENDIF
97abc6ad 1890$Gcc_check:
570bb66e 1891$ gccversion = ""
414b89cc 1892$ IF ccname .EQS. "GCC"
97abc6ad 1893$ THEN
570bb66e
JH
1894$ vaxcrtl_olb = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB")
1895$ vaxcrtl_exe = F$SEARCH("SYS$SHARE:VAXCRTL.EXE")
1896$ gcclib_olb = F$SEARCH("GNU_CC:[000000]GCCLIB.OLB")
1897$ IF gcclib_olb .EQS. ""
97abc6ad 1898$ THEN
570bb66e
JH
1899$! These objects/libs come w/ gcc 2.7.2 for AXP:
1900$ tmp = F$SEARCH("GNU_CC:[000000]libgcc2.olb")
1901$ IF tmp .NES. "" then gcclib_olb = tmp
1902$ tmp = F$SEARCH("GNU_CC:[000000]libgcclib.olb")
1903$ IF tmp .NES. ""
1904$ THEN
1905$ IF gcclib_olb .EQS. ""
1906$ THEN gcclib_olb = tmp
1907$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp
1908$ ENDIF
97abc6ad 1909$ ENDIF
570bb66e
JH
1910$ tmp = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB")
1911$ IF tmp .NES. ""
1912$ THEN
1913$ IF gcclib_olb .EQS. ""
1914$ THEN gcclib_olb = tmp
1915$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp
1916$ ENDIF
97abc6ad 1917$ ENDIF
570bb66e
JH
1918$ tmp = F$SEARCH("GNU_CC:[000000]crt0.obj")
1919$ IF tmp .NES. ""
1920$ THEN
1921$ IF gcclib_olb .EQS. ""
1922$ THEN gcclib_olb = tmp
1923$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp
1924$ ENDIF
97abc6ad 1925$ ENDIF
570bb66e
JH
1926$ IF gcclib_olb .EQS. vaxcrtl_olb THEN gcclib_olb = "" !goofy order of axplibs
1927$ ELSE
1928$ gcclib_olb = gcclib_olb + "/lib"
97abc6ad 1929$ ENDIF
570bb66e 1930$ IF gcclib_olb .NES. "" .AND. -
97abc6ad
HM
1931 (vaxcrtl_olb .NES. "" .OR. -
1932 vaxcrtl_exe .NES. "" )
570bb66e
JH
1933$ THEN
1934$ echo ""
1935$ echo4 "Checking for GNU cc in disguise and/or its version number..." !>&4
1936$ OPEN/WRITE CONFIG gccvers.c
570bb66e
JH
1937$ WRITE CONFIG "#include <stdio.h>"
1938$ WRITE CONFIG "int main() {"
1939$ WRITE CONFIG "#ifdef __GNUC__"
1940$ WRITE CONFIG "#ifdef __VERSION__"
1941$ WRITE CONFIG " printf(""%s\n"", __VERSION__);"
1942$ WRITE CONFIG "#else"
1943$ WRITE CONFIG " printf(""%s\n"", ""1"");"
1944$ WRITE CONFIG "#endif"
1945$ WRITE CONFIG "#endif"
1946$ WRITE CONFIG " exit(0);"
1947$ WRITE CONFIG "}"
1948$ CLOSE CONFIG
1949$ DEFINE SYS$ERROR _NLA0:
1950$ DEFINE SYS$OUTPUT _NLA0:
1951$ 'Mcc' gccvers.c
1952$ tmp = $status
1953$ DEASSIGN SYS$ERROR _NLA0:
1954$ DEASSIGN SYS$OUTPUT _NLA0:
1955$ IF (silent) THEN GOSUB Shut_up
1956$ DEFINE SYS$ERROR _NLA0:
1957$ DEFINE SYS$OUTPUT _NLA0:
1958$ IF vaxcrtl_exe .EQS. ""
1959$ THEN
1960$ IF F$LOCATE("VAXCRTL",gcclib_olb).NE.F$LENGTH(gcclib_olb)
1961$ THEN
96021e87 1962$ link/nodebug gccvers.obj,'gcclib_olb',SYS$LIBRARY:VAXCRTL/Library
570bb66e
JH
1963$ tmp = $status
1964$ ELSE
96021e87 1965$ link/nodebug gccvers.obj,'gcclib_olb'
570bb66e
JH
1966$ tmp = $status
1967$ ENDIF
1968$ ELSE
1969$ OPEN/WRITE CONFIG GCCVERS.OPT
1970$ WRITE CONFIG "SYS$SHARE:VAXCRTL/SHARE"
1971$ CLOSE CONFIG
96021e87 1972$ link/nodebug gccvers.obj,GCCVERS.OPT/OPT,'gcclib_olb'
570bb66e
JH
1973$ tmp = $status
1974$ ENDIF
1975$ DEASSIGN SYS$ERROR
1976$ DEASSIGN SYS$OUTPUT
1977$ IF (silent) THEN GOSUB Shut_up
1978$ OPEN/WRITE CONFIG gccvers.out
1979$ DEFINE SYS$ERROR CONFIG
1980$ DEFINE SYS$OUTPUT CONFIG
1981$ mcr []gccvers.exe
1982$ tmp = $status
1983$ CLOSE CONFIG
1984$ DEASSIGN SYS$OUTPUT
1985$ DEASSIGN SYS$ERROR
1986$ IF (silent) THEN GOSUB Shut_up
1987$ OPEN/READ CONFIG gccvers.out
1988$ READ/END_OF_FILE=Gcc_cleanup CONFIG line
1989$Gcc_cleanup:
1990$ CLOSE CONFIG
1991$ DELETE/NOLOG/NOCONFIRM gccvers.*;
1992$ IF F$LOCATE("GNU C version ",line).NE.F$LENGTH(line)
1993$ THEN
1994$ echo "You are not using GNU cc."
1995$ GOTO Host_name
1996$ ELSE
1997$ echo "You are using GNU cc ''line'"
1998$ gccversion = line
414b89cc 1999$ ccname := "GCC"
570bb66e
JH
2000$ C_COMPILER_Replace = "CC=cc=''Mcc'"
2001$ GOTO Include_dirs
2002$ ENDIF
2003$ ENDIF
2004$ ENDIF
2005$Cxx_Version_check:
414b89cc 2006$ IF ccname .EQS. "CXX"
97abc6ad 2007$ THEN
570bb66e 2008$ OPEN/WRITE CONFIG cxxvers.c
97abc6ad
HM
2009$ WRITE CONFIG "#include <stdio.h>"
2010$ WRITE CONFIG "int main() {"
570bb66e
JH
2011$ WRITE CONFIG "#ifdef __DECCXX_VER"
2012$ WRITE CONFIG " printf(""%i\n"", __DECCXX_VER);"
97abc6ad 2013$ WRITE CONFIG "#else"
570bb66e 2014$ WRITE CONFIG " printf(""%i\n"", ""0"");"
97abc6ad 2015$ WRITE CONFIG "#endif"
570bb66e 2016$ WRITE CONFIG " return(0);"
97abc6ad
HM
2017$ WRITE CONFIG "}"
2018$ CLOSE CONFIG
570bb66e
JH
2019$ SET NOON
2020$ DEFINE/USER_MODE SYS$ERROR NL:
2021$ DEFINE/USER_MODE SYS$OUTPUT NL:
2022$ 'Mcc' cxxvers.c
97abc6ad 2023$ tmp = $status
570bb66e 2024$ SET ON
97abc6ad 2025$ IF (silent) THEN GOSUB Shut_up
570bb66e
JH
2026$ SET NOON
2027$ DEFINE/USER_MODE SYS$ERROR NL:
2028$ DEFINE/USER_MODE SYS$OUTPUT NL:
2029$ 'ld' cxxvers.obj
2030$ tmp = $status
2031$ SET ON
97abc6ad 2032$ IF (silent) THEN GOSUB Shut_up
570bb66e
JH
2033$ OPEN/WRITE CONFIG cxxvers.out
2034$ SET NOON
2035$ DEFINE/USER_MODE SYS$ERROR CONFIG
2036$ DEFINE/USER_MODE SYS$OUTPUT CONFIG
2037$ mcr []cxxvers.exe
97abc6ad 2038$ tmp = $status
570bb66e 2039$ SET ON
97abc6ad 2040$ CLOSE CONFIG
97abc6ad 2041$ IF (silent) THEN GOSUB Shut_up
570bb66e
JH
2042$ OPEN/READ CONFIG cxxvers.out
2043$ READ/END_OF_FILE=Cxx_cleanup CONFIG line
2044$Cxx_cleanup:
97abc6ad 2045$ CLOSE CONFIG
570bb66e
JH
2046$ DELETE/NOLOG/NOCONFIRM cxxvers.*;
2047$ echo "You are using CXX ''line'"
2048$ cxxversion = line
2049$ ccversion = line
60f153db 2050$ d_cplusplus = "define"
570bb66e 2051$ CALL Cxx_demangler_cleanup
60f153db
CB
2052$ ELSE
2053$ d_cplusplus = "undef"
570bb66e
JH
2054$ ENDIF
2055$!
2056$Cxx_demangler_cleanup: SUBROUTINE
2057$!
2058$! If we do build with CXX these demangler Dbs will be left all over.
2059$! However, configure.com does try to remove the [.UU] sub directory.
2060$! Be sure to set default to the correct place before calling this sub.
2061$!
2062$ SET NOON
2063$ IF F$SEARCH("[.CXX_REPOSITORY]*.*") .NES. "" THEN DELETE/NOLOG/NOCONFIRM [.CXX_REPOSITORY]*.*;*
2064$ IF F$SEARCH("CXX_REPOSITORY.DIR") .NES. ""
2065$ THEN
2066$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) CXX_REPOSITORY.DIR
2067$ DELETE/NOLOG/NOCONFIRM CXX_REPOSITORY.DIR;
97abc6ad 2068$ ENDIF
570bb66e
JH
2069$ SET ON
2070$ EXIT
2071$ ENDSUBROUTINE ! Cxx_demangler_cleanup
2072$!
97abc6ad
HM
2073$ GOTO Host_name
2074$!
2075$List_Parse:
2076$ OPEN/READ CONFIG ccvms.lis
2077$ READ CONFIG line
55315086 2078$ IF archname .EQS. "VMS_VAX"
97abc6ad
HM
2079$ THEN
2080$ read CONFIG line
2081$ archsufx = "VAX"
2082$ ELSE
a50752f9
CB
2083$ IF archname .EQS. "VMS_AXP"
2084$ THEN
2085$ archsufx = "AXP"
2086$ ELSE
2087$ archsufx = "IA64"
2088$ ENDIF
97abc6ad
HM
2089$ ENDIF
2090$ CLOSE CONFIG
2091$ line = F$EDIT(line,"TRIM,COMPRESS")
2092$ line = line - "Page 1" ! occurs at end all compilers
2093$ line = line - "CCVMS " ! filename appears w/ VAXC
2094$ line = line - "Source Listing " ! Seen w/ AXP DECC
2095$ tmp = F$EXTRACT(0,20,line) !timestamp, e.g. "30-JUL-1996 21:12:54 "
2096$ line = line - tmp
2097$ line = F$EDIT(line,"TRIM") !bit redundant but we're in no big hurry
2098$ DELETE/NOLOG/NOCONFIRM ccvms.lis;
2099$ RETURN
2100$!
2101$Include_dirs:
570bb66e 2102$!: What should the include directory be ? (.TLB text libraries)
97abc6ad
HM
2103$ dflt = gcclib_olb
2104$ rp = "Where are the include files you want to use? "
db7bf729 2105$ IF f$length( rp + "[''dflt'] " ) .GT. 76
97abc6ad
HM
2106$ THEN rp = F$FAO("!AS!/!AS",rp,"[''dflt'] ")
2107$ ELSE rp = rp + "[''dflt'] "
2108$ ENDIF
2109$ GOSUB myread
2110$ usrinc = ans
2111$!
2112$!: see if we have to deal with yellow pages, now NIS.
2113$!: now get the host name
2114$Host_name:
2115$ echo ""
2116$ echo4 "Figuring out host name..." !>&4
2117$ myhostname = ""
2118$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("ARPANET_HOST_NAME")
2119$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("INTERNET_HOST_NAME")
2120$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("MULTINET_HOST_NAME")
2121$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("UCX$INET_HOST_NAME")
2122$ IF myhostname.eqs."".and. -
2123 F$TRNLNM("UCX$INET_HOST") .nes. "" .and. -
2124 F$TRNLNM("UCX$INET_DOMAIN") .nes. "" THEN -
2125 myhostname = F$TRNLNM("UCX$INET_HOST") + "." + F$TRNLNM("UCX$INET_DOMAIN")
16421035
PP
2126$ IF myhostname.eqs."".and. -
2127 F$TRNLNM("TCPIP$INET_HOST") .nes. "" .and. -
2128 F$TRNLNM("TCPIP$INET_DOMAIN") .nes. "" THEN -
2129 myhostname = F$TRNLNM("TCPIP$INET_HOST") + "." + F$TRNLNM("TCPIP$INET_DOMAIN")
97abc6ad
HM
2130$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("TCPWARE_DOMAINNAME")
2131$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("NEWS_ADDRESS")
2132$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("SYS$NODE") - "::"
2133$ IF myhostname.eqs."" THEN myhostname = F$EDIT(F$GETSYI("SCSNODE"),"TRIM")
2134$!: you do not want to know about this
2135$!: verify guess
2136$ rp = "Your host name appears to be """"''myhostname'"""". Right? "
9b5c8979 2137$ bool_dflt = "y"
97abc6ad 2138$ GOSUB myread
9b5c8979 2139$ IF (.not.ans)
97abc6ad
HM
2140$ THEN
2141$ READ SYS$COMMAND/PROMPT= -
2142 "Please type the (one word) name of your host: " ans
2143$ myhostname = ans
2144$ ENDIF
2145$!: translate upper to lower if necessary
2146$ myhostname = F$EDIT(myhostname,"COLLAPSE")
2147$ mylowhostname = F$EDIT(myhostname," LOWERCASE")
2148$ IF mylowhostname.NES.myhostname
2149$ THEN
2150$ echo "(Normalizing case in your host name)"
2151$ myhostname = mylowhostname
2152$ ENDIF
2153$!
2154$ fp = F$LOCATE(".",myhostname)
2155$ mydomain = F$EXTRACT(fp,(F$LENGTH(myhostname)-fp)+1,myhostname)
2156$ IF mydomain.NES."" !no periods in DECnet names like "MYDECNODE::"
2157$ THEN
2158$ rp = "What is your domain name? [''mydomain'] "
9b5c8979 2159$ dflt = mydomain
97abc6ad 2160$ GOSUB myread
9b5c8979 2161$ mydomain = ans
97abc6ad
HM
2162$!: translate upper to lower if necessary
2163$ mydomain = F$EDIT(mydomain,"COLLAPSE")
2164$ mylowdomain = F$EDIT(mydomain," LOWERCASE")
2165$ IF mylowdomain.NES.mydomain
2166$ THEN
2167$ echo "(Normalizing case in your domain name)"
2168$ mydomain = mylowdomain
2169$ ENDIF
2170$ ENDIF
2171$ myhostname = myhostname - mydomain
2172$ echo "(Trimming domain name from host name--host name is now ''myhostname')"
2173$ IF .NOT.silent
7558ebc2
PP
2174$ THEN
2175$ TYPE SYS$INPUT:
2176$ DECK
97abc6ad
HM
2177
2178I need to get your e-mail address in Internet format if possible, i.e.
2179something like user@host.domain. Please answer accurately since I have
2180no easy means to double check it. The default value provided below
2181is most probably close to the reality but may not be valid from outside
2182your organization...
7558ebc2 2183$ EOD
97abc6ad 2184$ ENDIF
414b89cc
CB
2185$ IF F$TYPE(cf_email) .EQS. ""
2186$ THEN
2187$ dflt = "''cf_by'@''myhostname'"+"''mydomain'"
2188$ rp = "What is your e-mail address? [''dflt'] "
2189$ GOSUB myread
9b5c8979 2190$ cf_email = ans
97abc6ad
HM
2191$ ENDIF
2192$!
2193$ IF .NOT.silent
7558ebc2
PP
2194$ THEN
2195$ TYPE SYS$INPUT:
2196$ DECK
97abc6ad
HM
2197
2198If you or somebody else will be maintaining perl at your site, please
2199fill in the correct e-mail address here so that they may be contacted
2200if necessary. Currently, the "perlbug" program included with perl
2201will send mail to this address in addition to perlbug@perl.com. You may
2202enter "none" for no administrator.
7558ebc2 2203$ EOD
97abc6ad
HM
2204$ ENDIF
2205$ dflt = "''cf_email'"
2206$ rp = "Perl administrator e-mail address [''dflt'] "
2207$ GOSUB myread
9b5c8979 2208$ perladmin = ans
97abc6ad
HM
2209$!
2210$!: determine where public executable scripts go
2211$!: determine perl absolute location
2212$!: figure out how to guarantee perl startup
2213$!
2214$!: see how we invoke the C preprocessor
2215$! echo ""
2216$! echo4 "Now, how can we feed standard input to your C preprocessor..." !>&4
2217$!: Set private lib path
2218$!: Now check and see which directories actually exist, avoiding duplicates
2219$!: determine optimize, if desired, or use for debug flag also
2220$!: We will not override a previous value, but we might want to
2221$!: augment a hint file
2222$!: the following weeds options from ccflags that are of no interest to cpp
2223$!: flags used in final linking phase
2224$!: Try to guess additional flags to pick up local libraries.
2225$!: coherency check
2226$! echo ""
2227$! echo4 "Checking your choice of C compiler and flags for coherency..." !>&4
2228$!: compute shared library extension
2229$!: Looking for optional libraries
2230$!: see if nm is to be used to determine whether a symbol is defined or not
2231$!: get list of predefined functions in a handy place
983dbef6 2232$!: see if we have sigaction or sigprocmask
97abc6ad
HM
2233$!: see whether socketshr exists
2234$ IF (F$SEARCH(F$PARSE("SocketShr","Sys$Share:.Exe")).NES."")
2235$ THEN
570bb66e 2236$ Has_socketshr = "T"
97abc6ad 2237$ echo ""
7558ebc2 2238$ echo4 "Hmm... Looks like you have SOCKETSHR Berkeley networking support."
570bb66e
JH
2239$ ELSE
2240$ Has_socketshr = "F"
2241$ ENDIF
fcc434ad 2242$ IF (ccname .EQS. "DEC" .AND. Dec_C_Version .GE. 50200000) .OR. (ccname .EQS. "CXX")
97abc6ad
HM
2243$ THEN
2244$ Has_Dec_C_Sockets = "T"
2245$ echo ""
7558ebc2 2246$ echo4 "Hmm... Looks like you have Dec C Berkeley networking support."
570bb66e
JH
2247$ ELSE
2248$ Has_Dec_C_Sockets = "F"
97abc6ad
HM
2249$ ENDIF
2250$ ! Hey, we've got both. Default to Dec C, then, since it's better
570bb66e 2251$ IF Has_socketshr .OR. Has_Dec_C_Sockets
97abc6ad
HM
2252$ THEN
2253$ echo ""
7558ebc2
PP
2254$ echo "You have sockets available. Which socket stack do you want to"
2255$ echo "build into Perl?"
570bb66e 2256$ IF Has_Dec_C_Sockets
97abc6ad
HM
2257$ THEN
2258$ dflt = "DECC"
fcc434ad 2259$ ELSE
e6df7ed1 2260$ dflt = "SOCKETSHR"
fcc434ad 2261$ ENDIF
97abc6ad 2262$ rp = "Choose socket stack (NONE"
570bb66e
JH
2263$ IF Has_socketshr THEN rp = rp + ",SOCKETSHR"
2264$ IF Has_Dec_C_Sockets THEN rp = rp + ",DECC"
97abc6ad
HM
2265$ rp = rp + ") [''dflt'] "
2266$ GOSUB myread
570bb66e
JH
2267$ Has_Dec_C_Sockets = "F"
2268$ Has_socketshr = "F"
97abc6ad 2269$ ans = F$EDIT(ans,"TRIM,COMPRESS,LOWERCASE")
fcc434ad
PP
2270$ IF ans.eqs."decc" THEN Has_Dec_C_Sockets = "T"
2271$ IF ans.eqs."socketshr" THEN Has_socketshr = "T"
570bb66e 2272$ ENDIF
97abc6ad
HM
2273$!
2274$!
3eeba6fb 2275$! Ask if they want to build with VMS_DEBUG perl
146174a9 2276$ echo ""
3eeba6fb
CB
2277$ echo "Perl can be built to run under the VMS debugger."
2278$ echo "You should only select this option if you are debugging"
2279$ echo "perl itself. This can be a useful feature if you are "
2280$ echo "embedding perl in a program."
9b5c8979
JH
2281$ bool_dflt = "n"
2282$ if f$type(usevmsdebug) .nes. ""
2283$ then
2284$ if usevmsdebug .or. usevmsdebug .eqs. "define" then bool_dflt="y"
2285$ endif
2286$ rp = "Build a VMS-DEBUG version of Perl? [''bool_dflt'] "
3eeba6fb 2287$ GOSUB myread
9b5c8979
JH
2288$ use_vmsdebug_perl = ans
2289$ IF use_vmsdebug_perl
3eeba6fb 2290$ THEN
9b5c8979 2291$ usevmsdebug = "define"
3eeba6fb
CB
2292$ macros = macros + """__DEBUG__=1"","
2293$ ELSE
9b5c8979 2294$ usevmsdebug = "undef"
3eeba6fb
CB
2295$ ENDIF
2296$!
8c99d73e
GS
2297$! Ask if they want to build with DEBUGGING
2298$ echo ""
7558ebc2
PP
2299$ echo "Perl can be built with extra runtime debugging enabled. This"
2300$ echo "enables the -D switch, at the cost of some performance. It"
2301$ echo "was mandatory on perl 5.005 and before on VMS, but is now"
2302$ echo "optional. If you do not generally use it you should probably"
2303$ echo "leave this off and gain a bit of extra speed."
9b5c8979
JH
2304$ bool_dflt = "y"
2305$ if f$type(useperldebug) .nes. ""
2306$ then
2307$ if f$extract(0,1,f$edit(useperldebug,"collapse,upcase")).eqs."N" .or. useperldebug .eqs. "undef" then bool_dflt="n"
2308$ endif
2309$ rp = "Build a DEBUGGING version of Perl? [''bool_dflt'] "
8c99d73e 2310$ GOSUB myread
9b5c8979 2311$ use_debugging_perl = ans
8c99d73e 2312$!
3937c24e 2313$! Ask if they want to build with MULTIPLICITY
146174a9 2314$ echo ""
570bb66e
JH
2315$ echo "Perl can be built so that multiple Perl interpreters can coexist"
2316$ echo "within the same Perl executable."
7558ebc2
PP
2317$ echo "There is some performance overhead, however, so you"
2318$ echo "probably do not want to choose this unless you are going to be"
2319$ echo "doing things with embedded perl."
9b5c8979
JH
2320$ bool_dflt = "n"
2321$ if f$type(usemultiplicity) .nes. ""
2322$ then
2323$ if usemultiplicity .or. usemultiplicity .eqs. "define" then bool_dflt = "y"
2324$ endif
2325$ rp = "Build Perl for multiplicity? [''bool_dflt'] "
3937c24e 2326$ GOSUB myread
570bb66e 2327$ IF ans
3937c24e 2328$ THEN
570bb66e 2329$ usemultiplicity="define"
3937c24e 2330$ ELSE
570bb66e 2331$ usemultiplicity="undef"
3937c24e 2332$ ENDIF
fafa4fee
CB
2333$!
2334$! Ask if they want to build with 64-bit support
a50752f9 2335$ IF (archname.NES."VMS_VAX").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
fafa4fee 2336$ THEN
9b5c8979 2337$ bool_dflt = "n"
842bcadf
CB
2338$ IF F$TYPE(use64bitint) .NES. ""
2339$ THEN
9b5c8979 2340$ IF use64bitint .OR. use64bitint .eqs. "define" THEN bool_dflt = "y"
842bcadf 2341$ ENDIF
fafa4fee 2342$ echo ""
e0261ef8 2343$ echo "You have natively 64-bit long integers."
f53b4005 2344$ echo ""
7558ebc2 2345$ echo "Perl can be built to take advantage of 64-bit integer types"
e0261ef8 2346$ echo "on some systems, To do so, Configure can be run with -Duse64bitint."
7558ebc2 2347$ echo "Choosing this option will most probably introduce binary incompatibilities."
f53b4005 2348$ echo ""
e0261ef8 2349$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
9b5c8979 2350$ rp = "Try to use 64-bit integers, if available? [''bool_dflt'] "
5e4ba136 2351$ GOSUB myread
9b5c8979 2352$ use64bitint = ans
842bcadf 2353$!
9b5c8979 2354$ bool_dflt = "n"
842bcadf
CB
2355$ IF F$TYPE(use64bitall) .NES. ""
2356$ THEN
9b5c8979 2357$ IF use64bitall .OR. use64bitall .eqs. "define" THEN bool_dflt = "y"
842bcadf
CB
2358$ ENDIF
2359$ echo ""
2360$ echo "You may also choose to try maximal 64-bitness. It means using as much"
2361$ echo "64-bitness as possible on the platform. This in turn means even more"
2362$ echo "binary incompatibilities. On the other hand, your platform may not"
2363$ echo "have any more 64-bitness available than what you already have chosen."
2364$ echo ""
e0261ef8 2365$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
9b5c8979 2366$ rp = "Try to use maximal 64-bit support, if available? [''bool_dflt'] "
842bcadf 2367$ GOSUB myread
9b5c8979 2368$ use64bitall=ans
842bcadf 2369$ IF use64bitall .AND. .NOT. use64bitint
f53b4005 2370$ THEN
f53b4005 2371$ echo ""
842bcadf
CB
2372$ echo "Since you have chosen a maximally 64-bit build, I'm also turning on"
2373$ echo "the use of 64-bit integers."
2374$ use64bitint="Y"
f53b4005 2375$ ENDIF
e0261ef8 2376$!
96021e87 2377$ bool_dflt = use64bitall
e0261ef8
CB
2378$ IF F$TYPE(uselargefiles) .NES. ""
2379$ THEN
2380$ IF uselargefiles .OR. uselargefiles .eqs. "define" THEN bool_dflt = "y"
2381$ ENDIF
2382$ echo ""
2383$ echo "Perl can be built to understand large files (files larger than 2 gigabytes)"
2384$ echo "on some systems. To do so, Configure can be run with -Duselargefiles."
2385$ echo ""
2386$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
2387$ rp = "Try to understand large files, if available? [''bool_dflt'] "
2388$ GOSUB myread
e366167b 2389$ uselargefiles=ans
e0261ef8 2390$!
50ddda1d
CB
2391$ bool_dflt = "n"
2392$ IF F$TYPE(uselongdouble) .NES. ""
2393$ THEN
2394$ IF uselongdouble .OR. uselongdouble .eqs. "define" THEN bool_dflt = "y"
2395$ ENDIF
2396$ echo ""
2397$ echo "Perl can be built to take advantage of long doubles which"
2398$ echo "(if available) may give more accuracy and range for floating point numbers."
2399$ echo ""
2400$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
2401$ rp = "Try to use long doubles, if available? [''bool_dflt'] "
2402$ GOSUB myread
2403$ uselongdouble = ans
2404$!
e0261ef8 2405$ ENDIF ! not VAX && >= 7.1
146174a9 2406$!
79e63f36
CB
2407$ IF usesitecustomize .OR. usesitecustomize .eqs. "define"
2408$ THEN
2409$ usesitecustomize = "define"
2410$ ELSE
2411$ usesitecustomize = "undef"
2412$ ENDIF
2413$!
97abc6ad 2414$! Ask about threads, if appropriate
414b89cc 2415$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
97abc6ad 2416$ THEN
146174a9 2417$ echo ""
0e965207
JH
2418$ echo "Perl can be built to take advantage of threads on some systems."
2419$ echo "To do so, configure.com can be run with -""Dusethreads""."
2420$ echo ""
2421$ echo "Note that Perl built with threading support runs slightly slower"
2422$ echo "and uses more memory than plain Perl. The current implementation"
2423$ echo "is believed to be stable, but it is fairly new, and so should be"
2424$ echo "treated with caution."
2425$ echo ""
9b5c8979
JH
2426$ bool_dflt = "n"
2427$ if f$type(usethreads) .nes. ""
2428$ then
2429$ if usethreads .or. usethreads .eqs. "define" then bool_dflt="y"
2430$ endif
0e965207
JH
2431$! Catch cases where user specified ithreads or 5005threads but
2432$! forgot -Dusethreads
2433$ if f$type(useithreads) .nes. ""
2434$ then
2435$ if useithreads .or. useithreads .eqs. "define" then bool_dflt="y"
2436$ endif
2437$ if f$type(use5005threads) .nes. ""
2438$ then
2439$ if use5005threads .or. use5005threads .eqs. "define" then bool_dflt="y"
2440$ endif
2441$ echo "If this doesn't make any sense to you, just accept the default '" + bool_dflt + "'."
2442$ rp = "Build a threading Perl? [''bool_dflt'] "
97abc6ad 2443$ GOSUB myread
9b5c8979 2444$ if ans
97abc6ad
HM
2445$ THEN
2446$ use_threads="T"
0e965207
JH
2447$ ! Shall we do the 5.005-type threads, or IThreads?
2448$ echo "Since release 5.6, Perl has had two different threading implementations,"
2449$ echo "the newer interpreter-based version (ithreads) with one interpreter per"
2450$ echo "thread, and the older 5.005 version (5005threads)."
2451$ echo "The 5005threads version is effectively unmaintained and will probably be"
2452$ echo "removed in Perl 5.10, so there should be no need to build a Perl using it"
2453$ echo "unless needed for backwards compatibility with some existing 5.005threads"
2454$ echo "code."
7558ebc2 2455$ echo ""
0e965207 2456$ bool_dflt = "y"
9b5c8979
JH
2457$ if f$type(useithreads) .nes. ""
2458$ then
41cbbefa 2459$ if useithreads .eqs. "undef" then bool_dflt="n"
0e965207
JH
2460$ endif
2461$ if f$type(use5005threads) .nes. ""
2462$ then
2463$ if use5005threads .or. use5005threads .eqs. "define" then bool_dflt="n"
9b5c8979 2464$ endif
0e965207 2465$ rp = "Use the newer intepreter-based ithreads? [''bool_dflt'] "
2974eb71 2466$ GOSUB myread
9b5c8979
JH
2467$ use_ithreads=ans
2468$ if use_ithreads
498336ed 2469$ THEN
498336ed
CB
2470$ use_5005_threads="N"
2471$ ELSE
498336ed
CB
2472$ use_5005_threads="Y"
2473$ ENDIF
3f39e13a
CB
2474$ ! Are they on VMS 7.1 or greater?
2475$ IF "''f$extract(1,3, f$getsyi(""version""))'" .GES. "7.1"
429a5e67
DS
2476$ THEN
2477$ echo ""
3f39e13a
CB
2478$ echo "Threaded Perl can be linked to use system upcalls on your system. This feature"
2479$ echo "allows the thread scheduler to be made aware of system events (such as I/O)"
2480$ echo "so as to prevent a single thread from blocking all the threads in a program,"
2481$ echo "even on a single-processor machine."
2482$ bool_dflt = "y"
2483$ IF f$type(usethreadupcalls) .NES. ""
2484$ THEN
2485$ if .not. usethreadupcalls .or. usethreadupcalls .eqs. "undef" then bool_dflt="n"
2486$ ENDIF
2487$ rp = "Enable thread upcalls? [''bool_dflt'] "
429a5e67 2488$ gosub myread
3f39e13a 2489$ IF ans
429a5e67 2490$ THEN
3f39e13a
CB
2491$ thread_upcalls = "MTU=MTU=1"
2492$ usethreadupcalls = "define"
2493$ ! Are they on alpha or itanium?
2494$ IF (archname .NES. "VMS_VAX") .AND. ("''f$extract(1,3, f$getsyi(""version""))'" .GES. "7.2")
2495$ THEN
2496$ echo ""
2497$ echo "Threaded Perl can be linked to use multiple kernel threads on your system."
db7bf729 2498$ echo "This feature allows multiple user threads to make use of multiple CPUs on"
3f39e13a
CB
2499$ echo "a multi-processor machine."
2500$ bool_dflt = "n"
2501$ IF f$type(usekernelthreads) .nes. ""
2502$ THEN
2503$ if usekernelthreads .or. usekernelthreads .eqs. "define" then bool_dflt="y"
2504$ ENDIF
2505$ rp = "Enable multiple kernel threads? [''bool_dflt'] "
2506$ gosub myread
2507$ IF ans
2508$ THEN
2509$ thread_kernel = "MTK=MTK=1"
2510$ usekernelthreads = "define"
db7bf729 2511$ ENDIF
3f39e13a 2512$ ENDIF
429a5e67
DS
2513$ ENDIF
2514$ ENDIF
97abc6ad
HM
2515$ ENDIF
2516$ ENDIF
3f39e13a
CB
2517$ IF F$TYPE(usethreadupcalls) .EQS. "" THEN usethreadupcalls = "undef"
2518$ IF F$TYPE(usekernelthreads) .EQS. "" THEN usekernelthreads = "undef"
a50752f9 2519$ IF archname .NES. "VMS_VAX"
7558ebc2 2520$ THEN
498336ed 2521$! Case sensitive?
7558ebc2
PP
2522$ echo ""
2523$ echo "By default, perl (and pretty much everything else on VMS) uses"
2524$ echo "case-insensitive linker symbols. Which is to say, when the"
2525$ echo "underlying C code makes a call to a routine called Perl_foo in"
2526$ echo "the source, the name in the object modules or shareable images"
2527$ echo "is really PERL_FOO. There are some packages that use an"
2528$ echo "embedded perl interpreter that instead require case-sensitive"
2529$ echo "linker symbols."
2530$ echo ""
2531$ echo "If you have no idea what this means, and do not have"
2532$ echo "any program requiring anything, choose the default."
9b5c8979
JH
2533$ bool_dflt = be_case_sensitive
2534$ if f$type(usecasesensitive) .nes. ""
2535$ then
2536$ if usecasesensitive .or. usecasesensitive .eqs. "define" then bool_dflt = "y"
2537$ if f$extract(0,1,f$edit(usecasesensitive,"collapse,upcase")).eqs."N" .or. usecasesensitive .eqs. "undef" then bool_dflt = "n"
2538$ endif
2539$ rp = "Build with case-sensitive symbols? [''bool_dflt'] "
7558ebc2 2540$ GOSUB myread
9b5c8979 2541$ be_case_sensitive = ans
498336ed 2542$! IEEE math?
7558ebc2 2543$ echo ""
3ad67d07
CB
2544$ echo "Perl normally uses IEEE format (T_FLOAT) floating point numbers on"
2545$ echo "Alpha and Itanium, but if you need G_FLOAT for binary compatibility"
24866caa
CB
2546$ echo "with an external library or existing data, you may wish to disable"
2547$ echo "the IEEE math option."
9b5c8979
JH
2548$ bool_dflt = use_ieee_math
2549$ if f$type(useieee) .nes. ""
2550$ then
17d0565f
CB
2551$ if useieee .or. useieee .eqs. "define"
2552$ then
2553$ bool_dflt="y"
2554$ else
2555$ bool_dflt="n"
2556$ endif
9b5c8979
JH
2557$ endif
2558$ rp = "Use IEEE math? [''bool_dflt'] "
7558ebc2 2559$ GOSUB myread
9b5c8979 2560$ use_ieee_math = ans
bb6f4497
CL
2561$ ELSE
2562$ be_case_sensitive = "n"
2563$ use_ieee_math = "n"
7558ebc2 2564$ ENDIF
9b5c8979
JH
2565$ useieee = "undef"
2566$ usecasesensitive = "undef"
2567$ if (use_ieee_math) then useieee = "define"
2568$ if (be_case_sensitive) then usecasesensitive = "define"
4adb8845
CB
2569$! Unlink all versions?
2570$ echo ""
2571$ echo "By default, Perl's unlink() provides VMS-like behavior and only"
2572$ echo "deletes the latest version of a file. Enabling this option builds"
2573$ echo "Perl so that unlink() deletes all versions of a file."
2574$ bool_dflt = unlink_all_versions
2575$ if f$type(unlink_all_versions) .nes. ""
2576$ then
2577$ if unlink_all_versions .or. unlink_all_versions .eqs. "define"
2578$ then
2579$ bool_dflt="y"
2580$ else
2581$ bool_dflt="n"
2582$ endif
2583$ endif
2584$ rp = "Make unlink() delete all versions of a file? [''bool_dflt'] "
2585$ GOSUB myread
2586$ unlink_all_versions = ans
2587$ IF unlink_all_versions
2588$ THEN
2589$ d_unlink_all_versions = "define"
2590$ ELSE
2591$ d_unlink_all_versions = "undef"
2592$ ENDIF
e9df20f7 2593$!
498336ed
CB
2594$! CC Flags
2595$ echo ""
7558ebc2
PP
2596$ echo "Your compiler may want other flags. For this question you should include"
2597$ echo "/INCLUDE=(whatever) and /DEFINE=(whatever), flags and any other flags"
2598$ echo "or qualifiers used by the compiler."
2599$ echo ""
2600$ echo "To use no flags, specify the word ""none""."
498336ed 2601$ dflt = user_c_flags
7558ebc2
PP
2602$ rp = "Any additional cc flags? [''dflt'] "
2603$ GOSUB myread
7558ebc2 2604$ IF ans .EQS. "none" THEN ans = ""
498336ed 2605$ user_c_flags = "''ans'"
97abc6ad 2606$!
cc391245
CB
2607$! Ask whether they want to use secure logical translation when tainting
2608$ echo ""
2609$ echo "As Perl starts up, it checks several logical names, such as"
2610$ echo "PERL5LIB and PERL_ENV_TABLES, which allow you to modify aspects"
2611$ echo "of its behavior. For additional security, you may limit this"
2612$ echo "process to executive- and kernel-mode translation when tainting"
2613$ echo "is enabled. In this case, logical names normally skipped when"
2614$ echo "tainting is enabled (e.g. PERL5OPTS) are translated as well."
2615$ echo "If you do not choose to do this, the usual order of access modes"
2616$ echo "is used for logical name translation."
2617$ echo ""
2618$ echo "This restriction does not apply to the %ENV hash or to implicit"
2619$ echo "logical name translation during parsing of file specifications;"
2620$ echo "these always use the normal sequence of access modes for logical"
2621$ echo "name translation."
9b5c8979
JH
2622$ bool_dflt = "y"
2623$ if f$type(usesecurelog) .nes. ""
2624$ then
2625$ if f$extract(0,1,f$edit(usesecurelog,"collapse,upcase")).eqs."N" .or. usesecurelog .eqs. "undef" then bool_dflt = "n"
2626$ endif
2627$ rp = "Use secure logical name translation? [''bool_dflt'] "
cc391245 2628$ GOSUB myread
9b5c8979
JH
2629$ d_secintgenv = ans
2630$ usesecurelog = "undef"
2631$ if (d_secintgenv) then usesecurelog = "define"
cc391245
CB
2632$!
2633$! Ask whether they want to default filetypes
2634$ echo ""
2635$ echo "When you pass the name of a program to Perl on the command line,"
2636$ echo "it generally doesn't supply any defaults unless the -S command"
2637$ echo "line switch is specified. In keeping with the VMS tradition of"
2638$ echo "default file types, however, you can configure Perl to try default"
2639$ echo "file types of nothing, .pl, and .com, in that order (e.g. typing"
2640$ echo """$ perl foo"" would cause Perl to look for foo., then foo.pl, and"
2641$ echo "finally foo.com)."
8c99d73e 2642$ echo ""
7558ebc2
PP
2643$ echo "This is currently broken in some configurations. Only enable it if"
2644$ echo "you know what you are doing."
9b5c8979
JH
2645$ bool_dflt = "n"
2646$ if f$type(usedefaulttypes) .nes. ""
2647$ then
2648$ if usedefaulttypes .or. usedefaulttypes .eqs. "define" then bool_dflt="y"
2649$ endif
2650$ rp = "Always use default file types? [''bool_dflt'] "
cc391245 2651$ GOSUB myread
9b5c8979
JH
2652$ d_alwdeftype = ans
2653$ usedefaulttypes = "undef"
2654$ if (d_alwdeftype) then usedefaulttypes = "define"
2655$!
dc8c9d5a
CB
2656$! determine whether to use malloc wrapping
2657$ echo ""
dc9da78b 2658$ bool_dflt = "y"
dc8c9d5a
CB
2659$ IF F$TYPE(usemallocwrap) .nes. ""
2660$ then
dc9da78b 2661$ if .NOT. usemallocwrap .or. usemallocwrap .eqs. "undef" then bool_dflt = "n"
dc8c9d5a
CB
2662$ endif
2663$ rp = "Do you wish to wrap malloc calls to protect against potential overflows? [''bool_dflt'] "
2664$ GOSUB myread
2665$ IF ans
2666$ THEN usemallocwrap = "define"
2667$ ELSE usemallocwrap = "undef"
2668$ ENDIF
2669$!
97abc6ad
HM
2670$! Ask if they want to use perl's memory allocator
2671$ echo ""
7558ebc2
PP
2672$ echo "Perl has a built-in memory allocator that is tuned for normal"
2673$ echo "memory usage. It is oftentimes better than the standard system"
2674$ echo "memory allocator. It also has the advantage of providing memory"
2675$ echo "allocation statistics, if you choose to enable them."
9b5c8979
JH
2676$ bool_dflt = "n"
2677$ IF F$TYPE(usemymalloc) .nes. ""
2678$ then
2679$ if usemymalloc .or. usemymalloc .eqs. "define" then bool_dflt = "y"
2680$ endif
2681$ rp = "Do you wish to attempt to use the malloc that comes with ''package'? [''bool_dflt'] "
97abc6ad 2682$ GOSUB myread
9b5c8979 2683$ mymalloc = ans
570bb66e 2684$ IF mymalloc
429a5e67 2685$ THEN
570bb66e 2686$ IF use_debugging_perl
429a5e67
DS
2687$ THEN
2688$ echo ""
7558ebc2
PP
2689$ echo "Perl can keep statistics on memory usage if you choose to use"
2690$ echo "them. This is useful for debugging, but does have some"
2691$ echo "performance overhead."
9b5c8979
JH
2692$ bool_dflt = "n"
2693$ rp = "Do you want the debugging memory allocator? [''bool_dflt'] "
429a5e67 2694$ gosub myread
9b5c8979 2695$ use_debugmalloc = ans
429a5e67
DS
2696$ ENDIF
2697$ ! Check which memory allocator we want
2698$ echo ""
7558ebc2
PP
2699$ echo "There are currently three different memory allocators: the"
2700$ echo "default (which is a pretty good general-purpose memory manager),"
2701$ echo "the TWO_POT allocator (which is optimized to save memory for"
2702$ echo "larger allocations), and PACK_MALLOC (which is optimized to save"
2703$ echo "memory for smaller allocations). They're all good, but if your"
2704$ echo "usage tends towards larger chunks use TWO_POT, otherwise use"
429a5e67 2705$ echo "PACK_MALLOC."
429a5e67
DS
2706$ dflt = "DEFAULT"
2707$ rp = "Memory allocator (DEFAULT, TWO_POT, PACK_MALLOC) [''dflt'] "
2708$ GOSUB myread
429a5e67
DS
2709$ if ans.eqs."TWO_POT" then use_two_pot_malloc = "Y"
2710$ if ans.eqs."PACK_MALLOC" then use_pack_malloc = "Y"
2711$ ENDIF
97abc6ad 2712$!
a3bd614a
PP
2713$ known_extensions = ""
2714$ xxx = ""
2715$ OPEN/READ CONFIG 'manifestfound'
2716$ext_loop:
2717$ READ/END_OF_FILE=end_ext/ERROR=end_ext CONFIG line
2718$ IF F$EXTRACT(0,4,line) .NES. "ext/" .AND. -
2719 F$EXTRACT(0,8,line) .NES. "vms/ext/" THEN goto ext_loop
2720$ line = F$EDIT(line,"COMPRESS")
2721$ line = F$ELEMENT(0," ",line)
2722$ line_len = F$LENGTH(line)
2723$ IF F$EXTRACT(line_len - 12,12,line) .NES. "/Makefile.PL" THEN goto ext_loop
2724$ IF F$EXTRACT(0,4,line) .EQS. "ext/" THEN -
2725 xxx = F$EXTRACT(4,line_len - 16,line)
2726$ IF xxx .EQS. "DynaLoader" THEN goto ext_loop ! omit
2727$ IF xxx .EQS. "SDBM_File/sdbm" THEN goto ext_loop ! sub extension - omit
d6ec9fa3 2728$ IF xxx .EQS. "Devel/PPPort/harness" THEN goto ext_loop ! sub extension - omit
36482049 2729$ IF F$EXTRACT(0,7,xxx) .EQS. "Encode/" THEN goto ext_loop ! sub extension - omit
ba861905 2730$ IF xxx .EQS. "B/C" THEN goto ext_loop ! sub extension - omit
a3bd614a
PP
2731$ IF F$EXTRACT(0,8,line) .EQS. "vms/ext/" THEN -
2732 xxx = "VMS/" + F$EXTRACT(8,line_len - 20,line)
2733$ known_extensions = known_extensions + " ''xxx'"
2734$ goto ext_loop
2735$end_ext:
2736$ close CONFIG
2737$ DELETE/SYMBOL xxx
2738$ known_extensions = F$EDIT(known_extensions,"TRIM,COMPRESS")
2739$ dflt = known_extensions
2740$ IF ccname .NES. "DEC" .AND. ccname .NES. "CXX"
2741$ THEN
2742$ dflt = dflt - "POSIX" ! not with VAX C or GCC
2743$ ENDIF
2744$ dflt = dflt - "ByteLoader" ! needs to be ported
2745$ dflt = dflt - "DB_File" ! needs to be ported
2746$ dflt = dflt - "GDBM_File" ! needs porting/special library
2747$ dflt = dflt - "IPC/SysV" ! needs to be ported
2748$ dflt = dflt - "NDBM_File" ! needs porting/special library
2749$ dflt = dflt - "ODBM_File" ! needs porting/special library
dab31494 2750$ dflt = dflt - "Sys/Syslog" ! needs porting/special library "GDBM_File macro LOG_DEBUG"
9b5878df
CB
2751$ IF .NOT. Has_socketshr .AND. .NOT. Has_Dec_C_Sockets
2752$ THEN
2753$ dflt = dflt - "Socket" ! optional on VMS
2754$ ENDIF
65f9def6 2755$ ! Build this one only for threads without ithreads
112b974c
CB
2756$ IF F$TYPE(useithreads) .EQS. "" .OR. .NOT. use_threads
2757$ THEN
2758$ dflt = dflt - "Thread"
2759$ ELSE
2760$ IF useithreads .OR. useithreads .EQS. "define" THEN dflt = dflt - "Thread"
2761$ ENDIF
428c2b4e 2762$ dflt = dflt - "Win32API/File" - "Win32CORE" - "Win32" ! need Dave Cutler's other project
a3bd614a
PP
2763$ dflt = F$EDIT(dflt,"TRIM,COMPRESS")
2764$!
97abc6ad
HM
2765$! Ask for their default list of extensions to build
2766$ echo ""
7558ebc2
PP
2767$ echo "It is time to specify which modules you want to build into"
2768$ echo "perl. Most of these are standard and should be chosen, though"
2769$ echo "you might, for example, want to build GDBM_File instead of"
2770$ echo "SDBM_File if you have the GDBM library built on your machine."
2771$ echo ""
97abc6ad 2772$ echo "Which modules do you want to build into perl?"
97abc6ad
HM
2773$ rp = "[''dflt'] "
2774$ GOSUB myread
a3bd614a 2775$ extensions = F$EDIT(ans,"TRIM,COMPRESS")
97abc6ad
HM
2776$!
2777$! %Config-I-VMS, determine build/make utility here (make gmake mmk mms)
2778$ echo ""
570bb66e 2779$ echo "Checking your ""make"" utilities..."
97abc6ad
HM
2780$! If the 'build' that you use is not here add it and it's test
2781$! switch to the _END_ of these strings (and increment max_build)
2782$! (e.g. builders = builders + "/FOOMAKE"
2783$! probers = probers + " -fooVersionSwitch"
2784$! ) & please let me know about it.
2785$ builders = "IMAKE/GNUMAKE/MGMAKE/GMAKE/MAKE/MMS/MMK"
2786$ probers = "-f Makefile. -v!-f Makefile. -v!-f Makefile. -v!-f Makefile. -v!-f Makefile. -v!/IDENT!/IDENT"
2787$ max_build = 7
2788$!
96021e87
JM
2789$ orig_dflt = f$edit(builder,"UPCASE")
2790$ if orig_dflt .eqs. "" then orig_dflt = "MMK"
97abc6ad
HM
2791$ default_set = ""
2792$ ok_builders = ""
2793$ OPEN/WRITE/ERROR=Open_error CONFIG Makefile.
2794$ WRITE CONFIG "dont_make_anything_yet:"
2795$ WRITE CONFIG F$FAO("!_")
2796$ CLOSE CONFIG
2797$ n = 0
2798$ messages = F$ENVIRONMENT("MESSAGE")
2799$Build_probe:
2800$ build = F$ELEMENT(n,"/",builders)
2801$ probe = F$ELEMENT(n,"!",probers)
2802$ echo "Testing whether you have ''build' on your system..."
570bb66e
JH
2803$!
2804$! Noted with GNU Make version 3.60 that the $status and $severity
2805$! with the 'probe' Makefile appear to be: $STATUS == "%X1000000C"
2806$! $SEVERITY == "4".
2807$!
a3ef2c6f
GS
2808$ SET NOON
2809$ ON CONTROL_Y THEN GOTO Reenable_messages_build
2810$ SET MESSAGE/NOFAC/NOSEV/NOIDENT/NOTEXT
97abc6ad 2811$ 'build' 'probe'
570bb66e 2812$ IF ($SEVERITY .EQ. 1) ! not adequate?
97abc6ad
HM
2813$ THEN
2814$ echo "OK."
2815$ IF (build .EQS. orig_dflt)
2816$ THEN
2817$ default_set = "TRUE"
2818$ dflt = build
2819$ ENDIF
2820$ ok_builders = ok_builders + " " + build
2821$ IF (.NOT. default_set) THEN dflt = build
2822$ ELSE
2823$ echo "Nope."
2824$ ENDIF
a3ef2c6f
GS
2825$Reenable_messages_build:
2826$ SET MESSAGE 'messages'
2827$ SET ON
9b5c8979 2828$ on control_y then goto clean_up
97abc6ad
HM
2829$ n = n + 1
2830$ IF (n .LT. max_build) THEN GOTO Build_probe
2831$!
2832$ echo ""
2833$ IF (ok_builders .NES. "")
2834$ THEN
2835$ echo "Here is the list of builders you can apparently use:"
2836$ echo "(",ok_builders," )"
a5fddd44 2837$ rp = "Which """"make"""" utility do you wish to use? [''dflt'] "
97abc6ad
HM
2838$ GOSUB myread
2839$ ans = F$EDIT(ans,"TRIM, COMPRESS")
2840$ ans = F$EXTRACT(0,F$LOCATE(" ",ans),ans) !throw out "-f Makefile." here
2841$ IF (ans .EQS. "")
2842$ THEN build = dflt
2843$ ELSE build = ans
2844$ ENDIF
2845$ ELSE
2846$ TYPE SYS$INPUT:
7558ebc2 2847$ DECK
97abc6ad
HM
2848
2849%Config-E-VMS, ERROR:
2850 Well this looks pretty serious. Perl5 cannot be compiled without a "make"
2851 utility of some sort and after checking my "builders" list I cannot find
2852 the symbol or command you use on your system to compile programs.
2853
7558ebc2 2854$ EOD
570bb66e 2855$ READ SYS$COMMAND/PROMPT="Which ""MMS"" do you use? " ans
97abc6ad
HM
2856$ ans = F$EDIT(ans,"TRIM, COMPRESS")
2857$ ans = F$EXTRACT(0,F$LOCATE(" ",ans),ans) !throw out "-f Makefile." here
2858$ IF (ans .EQS. "")
2859$ THEN build = dflt
7558ebc2 2860$ echo "I do not know where ""make"" is, and my life depends on it."
97abc6ad
HM
2861$ echo "Go find a make program or fix your DCL$PATH setting!"
2862$ echo "ABORTING..."
2863$ SET DEFAULT 'vms_default_directory_name' !be kind rewind
2864$ STOP
2865$ EXIT 2 !$STATUS = "%X00000002" (error)
2866$ ELSE
2867$ build = ans
2868$ ENDIF
2869$ ENDIF
2870$!
fcc434ad 2871$ DELETE/NOLOG/NOCONFIRM Makefile.;
97abc6ad
HM
2872$ GOTO Beyond_open
2873$Open_error:
2874$ TYPE SYS$INPUT:
7558ebc2 2875$ DECK
97abc6ad
HM
2876
2877 There seems to be trouble. I just tried to create a file in
7558ebc2 2878$ EOD
97abc6ad
HM
2879$ echo4 'F$ENVIRONMENT("DEFAULT")'
2880$ TYPE SYS$INPUT:
7558ebc2 2881$ DECK
97abc6ad
HM
2882 but was unsuccessful. I am stopping now. Please check that directories'
2883 PROTECTION bits. I will leave you in the directory where you started
2884 Configure.com
7558ebc2 2885$ EOD
97abc6ad
HM
2886$ echo4 "ABORTING..."
2887$ GOTO Clean_up
2888$ STOP
2889$ EXIT
2890$!
2891$Beyond_open:
2892$! echo " Very well I will proceed with ""''build'"""
2893$ make = F$EDIT(build,"UPCASE")
2894$!
2895$!: locate the preferred pager for this system
2896$!pagers = "most|more|less|type/page"
936f6df1
CB
2897$ IF osvers .GES. "V6.1"
2898$ THEN
2899$ dflt = "type/page=save=10"
2900$ ELSE
2901$ dflt = "type/page"
2902$ ENDIF
dfe814dc
PP
2903$! assume that the presence of a most symbol indicates the presence
2904$! of the pager.
2905$ IF F$TYPE(most) .EQS. "STRING" THEN dflt = "most"
2906$ IF F$TYPE(pager) .EQS. "STRING" THEN dflt = pager
2907$ rp="What pager is used on your system? [''dflt'] "
2908$ GOSUB myread
9b5c8979 2909$ pager = ans
97abc6ad 2910$!
97abc6ad
HM
2911$! update makefile here
2912$! echo4 "Updating makefile..."
2913$!
2914$ IF (make .EQS. "MMS").OR.(make .EQS. "MMK")
2915$ THEN
08c7cbbb
GS
2916$ makefile = "" !wrt MANIFEST dir
2917$ UUmakefile = "[-]DESCRIP.MMS" !wrt CWD dir
2918$ DEFmakefile = "DESCRIP.MMS" !wrt DEF dir (?)
570bb66e 2919$ Makefile_SH = "descrip_mms.template"
97abc6ad 2920$ ELSE
08c7cbbb
GS
2921$ makefile = " -f Makefile." !wrt MANIFEST dir
2922$ UUmakefile = "[-]Makefile." !wrt CWD dir
2923$ DEFmakefile = "Makefile." !wrt DEF dir (?)
570bb66e 2924$ Makefile_SH = "Makefile.in"
97abc6ad
HM
2925$ ENDIF
2926$!
7558ebc2
PP
2927$ IF macros .NES. ""
2928$ THEN
97abc6ad
HM
2929$ tmp = F$LENGTH(macros)
2930$ macros = F$EXTRACT(0,(tmp-1),macros) !miss trailing comma
2931$ macros = "/macro=(" + macros + ")"
2932$ ENDIF
498336ed
CB
2933$! Build up the extra C flags
2934$!
7558ebc2
PP
2935$ IF use_ieee_math
2936$ THEN
e0261ef8 2937$ extra_flags = "''extra_flags'" + "/float=ieee/ieee=denorm"
3ad67d07
CB
2938$ ELSE
2939$ IF (archname.EQS."VMS_IA64")
2940$ THEN
2941$ extra_flags = "''extra_flags'" + "/float=g_float"
2942$ ENDIF
7558ebc2
PP
2943$ ENDIF
2944$ IF be_case_sensitive
2945$ THEN
498336ed 2946$ extra_flags = "''extra_flags'" + "/Names=As_Is"
7558ebc2 2947$ ENDIF
498336ed 2948$ extra_flags = "''extra_flags'" + "''user_c_flags'"
97abc6ad 2949$!
570bb66e
JH
2950$ min_pgflquota = "100000"
2951$ pgflquota = F$STRING(F$GETJPI("","PGFLQUOTA"))
2952$ IF pgflquota .LES. min_pgflquota
2953$ THEN
2954$ echo4 "Your PGFLQUOTA of ''pgflquota' appears too small to build ''package'."
2955$ READ SYS$COMMAND/PROMPT="Continue? [n] " ans
2956$ IF ans
2957$ THEN
2958$ echo4 "Continuing..."
2959$ ELSE
2960$ echo4 "ABORTING..."
2961$ GOTO Clean_up
2962$ ENDIF
2963$ ENDIF
97abc6ad 2964$!
c998f3c7
PP
2965$! PerlIO abstraction
2966$!
9b5c8979 2967$ bool_dflt = "y"
c998f3c7 2968$ IF F$TYPE(useperlio) .NES. ""
9b5c8979
JH
2969$ then
2970$ if f$extract(0,1,f$edit(useperlio,"collapse,upcase")) .eqs. "N" .or. useperlio .eqs. "undef" then bool_dflt = "n"
2971$ endif
c998f3c7
PP
2972$ IF .NOT. silent
2973$ THEN
5d8a6eb9 2974$ echo "Previous versions of ''package' used the standard IO mechanisms as"
c998f3c7
PP
2975$ TYPE SYS$INPUT:
2976$ DECK
2977defined in <stdio.h>. Versions 5.003_02 and later of perl allow
2978alternate IO mechanisms via the PerlIO abstraction layer, but the
5d8a6eb9
CB
2979stdio mechanism is still available if needed. The abstraction layer
2980can use AT&T's sfio (if you already have sfio installed) or regular stdio.
c998f3c7
PP
2981Using PerlIO with sfio may cause problems with some extension modules.
2982
2983$ EOD
9b5c8979 2984$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
c998f3c7 2985$ ENDIF
9b5c8979 2986$ rp = "Use the PerlIO abstraction layer? [''bool_dflt'] "
c998f3c7 2987$ GOSUB myread
c998f3c7
PP
2988$ IF ans
2989$ THEN
2990$ useperlio = "define"
2991$ ELSE
2992$ echo "Ok, doing things the stdio way."
2993$ useperlio = "undef"
2994$ ENDIF
2995$!
97abc6ad 2996$ echo ""
570bb66e
JH
2997$ echo4 "Checking the C run-time library."
2998$!
56aeb0ae 2999$! Former SUBCONFIGURE.COM
570bb66e
JH
3000$!
3001$! - build a config.sh for VMS Perl.
3002$! - use built config.sh to take config_h.SH -> config.h
3003$! - also take vms/descrip_mms.template -> descrip.mms (VMS Makefile)
3004$! vms/Makefile.in -> Makefile. (VMS GNU Makefile?)
3005$! vms/Makefile.SH -> Makefile. (VMS GNU Makefile?)
570bb66e
JH
3006$!
3007$! Note for folks from other platforms changing things in here:
3008$!
3009$! Fancy changes (based on compiler capabilities or VMS version or
3010$! whatever) are tricky, so go ahead and punt on those.
3011$!
3012$! Simple changes, though (say, always setting something to 1, or undef,
3013$! or something like that) are straightforward. Adding a new constant
3014$! item for the ultimately created config.sh requires at least one
3015$! (possibly more) line(s) to this file.
3016$!
3017$! Add a line in the format:
3018$!
3019$! $ WC "foo='undef'"
3020$!
3021$! somewhere between the line tagged '##BEGIN WRITE NEW CONSTANTS HERE##'
3022$! and the one tagged '##END WRITE NEW CONSTANTS HERE##' (note the order
3023$! is sorted ASCII and corresponds to the output of config.sh in the
3024$! Bourne shell version of Configure).
3025$! Be very careful with quoting, as it can be tricky.
3026$! For example if instead of a constant string like 'undef' or 'define'
3027$! you wanted to add something to VMS's config.sh that looks like:
3028$!
3029$! blank_string=''
3030$!
3031$! then add a line that looks like this before the
3032$! '##END WRITE NEW CONSTANTS HERE##' tagged line:
3033$!
3034$! $ WC "blank_string='" + "'"
3035$!
3036$! (+ is the string concatenator and "''var'" has the effect
3037$! of "${var}" in perl or sh, but "'const'" is not interpolated).
3038$!
3039$! Note that unitialized variables, such as a line like:
3040$!
3041$! $ WC "new_var='" + new_var + "'"
3042$!
3043$! should be avoided unless new_var has a value assigned prior
3044$! to that line (think of perl's -w warnings).
3045$!
3046$! %DCL-W-UNDSYM, undefined symbol - check validity and spelling
3047$! \NEW_VAR\
3048$!
3049$!
3050$ vms_ver = F$EXTRACT(1,3, osvers)
3051$ IF F$LENGTH(Mcc) .EQ. 0 THEN Mcc := "cc"
3052$ MCC = f$edit(mcc, "UPCASE")
3053$ C_Compiler_Replace := "CC=CC=''Mcc'''ccflags'"
414b89cc 3054$ IF ccname .EQS. "DEC"
570bb66e
JH
3055$ THEN
3056$ Checkcc := "''Mcc'/prefix=all"
3057$ ELSE
414b89cc 3058$ IF ccname .EQS. "CXX"
570bb66e
JH
3059$ THEN
3060$ Checkcc := cxx
3061$ ELSE
3062$ Checkcc := "''Mcc'"
3063$ ENDIF
3064$ ENDIF
3065$ ccflags = ccflags + extra_flags
3066$ IF be_case_sensitive
3067$ THEN
3068$ d_vms_be_case_sensitive = "define"
3069$ ELSE
3070$ d_vms_be_case_sensitive = "undef"
3071$ ENDIF
3072$! Some constant defaults.
3073$ hwname = f$getsyi("HW_NAME")
3074$ myname = myhostname
3075$ IF myname .EQS. "" THEN myname = F$TRNLNM("SYS$NODE")
3076$!
3077$ ccdlflags=""
3078$ cccdlflags=""
3079$!
50ddda1d
CB
3080$! FIXME -- This section does not really handle all the different permutations
3081$! of 64-bitness, and it does not provide for the /POINTER_SIZE=64 compiler
3082$! option that would be necessary to support the "explicit 64-bit interfaces"
3083$! promised by -Dusemorebits.
3084$!
3085$ usemorebits = "undef"
570bb66e
JH
3086$ IF use64bitint .OR. use64bitint .EQS. "define"
3087$ THEN
3088$ use64bitint = "define"
842bcadf
CB
3089$ ivdformat="""Ld"""
3090$ uvuformat="""Lu"""
3091$ uvoformat="""Lo"""
3092$ uvxformat="""Lx"""
3093$ uvXUformat="""LX"""
570bb66e
JH
3094$ ELSE
3095$ use64bitint = "undef"
842bcadf
CB
3096$ ivdformat="""ld"""
3097$ uvuformat="""lu"""
3098$ uvoformat="""lo"""
3099$ uvxformat="""lx"""
3100$ uvXUformat="""lX"""
3101$ ENDIF
3102$ IF uselongdouble .OR. uselongdouble .EQS. "define"
3103$ THEN
50ddda1d
CB
3104$ uselongdouble = "define"
3105$ alignbytes="16"
842bcadf
CB
3106$ nveformat="""Le"""
3107$ nvfformat="""Lf"""
3108$ nvgformat="""Lg"""
3109$ ELSE
50ddda1d 3110$ uselongdouble = "undef"
842bcadf
CB
3111$ nveformat="""e"""
3112$ nvfformat="""f"""
3113$ nvgformat="""g"""
570bb66e
JH
3114$ ENDIF
3115$ IF use64bitall .OR. use64bitall .EQS. "define"
3116$ THEN
3117$ use64bitall = "define"
3118$ ELSE
3119$ use64bitall = "undef"
3120$ ENDIF
e366167b
CB
3121$ IF uselargefiles .OR. uselargefiles .EQS. "define"
3122$ THEN
3123$ uselargefiles = "define"
3124$ ELSE
3125$ uselargefiles = "undef"
3126$ ENDIF
570bb66e 3127$!
9b5c8979
JH
3128$ usemymalloc = "undef"
3129$ if mymalloc then usemymalloc = "define"
570bb66e
JH
3130$!
3131$ perl_cc=Mcc
3132$!
55315086 3133$ IF (sharedperl .AND. archname .EQS. "VMS_AXP")
570bb66e
JH
3134$ THEN
3135$ obj_ext=".abj"
3136$ so="axe"
3137$ dlext="axe"
3138$ exe_ext=".axe"
3139$ lib_ext=".alb"
3140$ ELSE
a50752f9
CB
3141$ IF (sharedperl .AND. archname .EQS. "VMS_IA64")
3142$ THEN
3143$ obj_ext=".ibj"
3144$ so="ixe"
3145$ dlext="ixe"
3146$ exe_ext=".ixe"
3147$ lib_ext=".ilb"
3148$ ELSE
3149$ obj_ext=".obj"
3150$ so="exe"
3151$ dlext="exe"
3152$ exe_ext=".exe"
3153$ lib_ext=".olb"
3154$ ENDIF
570bb66e
JH
3155$ ENDIF
3156$ dlobj="dl_vms''obj_ext'"
3157$!
1b24ed4b 3158$ cppstdin="''perl_cc'/noobj/comments=as_is/preprocess=sys$output sys$input"
570bb66e 3159$ cppminus=" "
1b24ed4b 3160$ cpprun="''perl_cc'/noobj/comments=as_is/preprocess=sys$output sys$input"
570bb66e
JH
3161$ cpplast=" "
3162$!
3163$ timetype="time_t"
3164$ signal_t="void"
3165$ stdchar="char"
3166$!
3167$ IF mymalloc
3168$ THEN d_mymalloc="define"
3169$ ELSE d_mymalloc="undef"
3170$ ENDIF
3171$!
3172$ usedl="define"
ef060a86 3173$ startperl="""$ perl 'f$env(\""procedure\"")' \""'"+"'p1'\"" \""'"+"'p2'\"" \""'"+"'p3'\"" \""'"+"'p4'\"" \""'"+"'p5'\"" \""'"+"'p6'\"" \""'"+"'p7'\"" \""'"+"'p8'\""!\n"
4a5365b8 3174$ startperl=startperl + "$ exit++ + ++$status!=0 and $exit=$status=undef; while($#ARGV != -1 and $ARGV[$#ARGV] eq '"+"'){pop @ARGV;}"""
570bb66e 3175$!
a92ae878 3176$ IF ((use_threads) .AND. (vms_ver .LES. "6.2"))
570bb66e
JH
3177$ THEN
3178$ 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"
3179$ ELSE
3180$ libs=" "
3181$ ENDIF
414b89cc 3182$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
570bb66e
JH
3183$ THEN
3184$ libc="(DECCRTL)"
3185$ ELSE
3186$ libc=" "
3187$ ENDIF
3188$!
94928b12
JH
3189$! perllibs should be libs with all non-core libs (such as gdbm) removed.
3190$!
3191$ perllibs=libs
3192$!
570bb66e 3193$!
d207eff1 3194$ IF archname .NES. "VMS_VAX"
570bb66e
JH
3195$ THEN
3196$ d_PRId64 = "define"
570bb66e
JH
3197$ d_PRIu64 = "define"
3198$ d_PRIo64 = "define"
3199$ d_PRIx64 = "define"
842bcadf 3200$ d_PRIXU64 = "define"
570bb66e 3201$ sPRId64 = """Ld"""
6b356c8e 3202$ sPRIXU64 = """LX"""
59a27e12 3203$ sPRIi64 = """Li"""
570bb66e
JH
3204$ sPRIo64 = """Lo"""
3205$ sPRIu64 = """Lu"""
3206$ sPRIx64 = """Lx"""
3207$ d_quad = "define"
3208$ quadtype = "long long"
3209$ uquadtype = "unsigned long long"
d207eff1
CB
3210$ quadkind = "3"
3211$!
3212$ d_frexpl = "define"
3213$ d_modfl = "define"
3214$ d_modflproto = "define"
570bb66e
JH
3215$ ELSE
3216$ d_PRId64 = "undef"
6b356c8e 3217$ d_PRIXU64 = "undef"
570bb66e
JH
3218$ d_PRIu64 = "undef"
3219$ d_PRIo64 = "undef"
3220$ d_PRIx64 = "undef"
3221$ sPRId64 = ""
6b356c8e 3222$ sPRIXU64 = """lX"""
59a27e12 3223$ sPRIi64 = ""
570bb66e
JH
3224$ sPRIo64 = ""
3225$ sPRIu64 = ""
3226$ sPRIx64 = ""
3227$ d_quad = "undef"
d207eff1
CB
3228$ quadtype = "undef"
3229$ uquadtype = "undef"
3230$ quadkind = "undef"
a175606a 3231$!
570bb66e 3232$ d_frexpl = "undef"
570bb66e 3233$ d_modfl = "undef"
8725ccc4 3234$ d_modflproto = "undef"
570bb66e
JH
3235$ ENDIF
3236$!
6732c5ab 3237$ IF useieee .OR. useieee .EQS. "define"
a175606a
CB
3238$ THEN
3239$ d_isnan = "define"
3240$ d_isnanl = "define"
3241$ ELSE
3242$ d_isnan = "undef"
3243$ d_isnanl = "undef"
3244$ ENDIF
3245$!
570bb66e
JH
3246$! Now some that we build up
3247$!
a92ae878 3248$ IF use_threads
570bb66e
JH
3249$ THEN
3250$ IF use_5005_threads
3251$ THEN
3252$ arch = "''arch'-thread"
3253$ archname = "''archname'-thread"
3254$ d_old_pthread_create_joinable = "undef"
3255$ old_pthread_create_joinable = " "
3256$ use5005threads = "define"
3257$ useithreads = "undef"
3258$ ELSE
3259$ arch = "''arch'-ithread"
3260$ archname = "''archname'-ithread"
3261$ d_old_pthread_create_joinable = "undef"
3262$ old_pthread_create_joinable = " "
3263$ use5005threads = "undef"
3264$ useithreads = "define"
3265$ ENDIF
3266$ ELSE
3267$ d_old_pthread_create_joinable = "undef"
3268$ old_pthread_create_joinable = " "
3269$ use5005threads = "undef"
3270$ useithreads = "undef"
3271$ ENDIF
3272$!
3273$! Some that we need to invoke the compiler for
3274$!
3275$!
3276$! handy construction aliases/symbols
3277$!
3278$ OS := "open/write CONFIG []try.c"
3279$ WS := "write CONFIG"
3280$ CS := "close CONFIG"
3281$ DS := "delete/nolog/noconfirm []try.*;*"
3282$ Needs_Opt := N
3283$ good_compile = %X10B90001
414b89cc 3284$ IF ccname .EQS. "GCC"
570bb66e
JH
3285$ THEN
3286$ open/write OPTCHAN []try.opt
3287$ write OPTCHAN "Gnu_CC:[000000]gcclib.olb/library"
3288$ write OPTCHAN "Sys$Share:VAXCRTL/Share"
3289$ Close OPTCHAN
3290$ Needs_Opt := Y
3291$ good_compile = %X10000001
3292$ ENDIF
414b89cc 3293$ IF ccname .EQS. "CXX"
570bb66e
JH
3294$ THEN
3295$ good_compile = %X15F60001
3296$ ENDIF
3297$ good_link = %X10000001
3298$ tmp = "" ! null string default
3299$!
3300$ GOTO beyond_compile_ok
3301$!
3302$! Check for type sizes
3303$!
3304$type_size_check:
3305$!
3306$ OS
7558ebc2
PP
3307$ WS "#if defined(__DECC) || defined(__DECCXX)"
3308$ WS "#include <stdlib.h>"
3309$ WS "#endif"
3310$ WS "#include <stdio.h>"
3311$ WS "int main()"
570bb66e
JH
3312$ WS "{"
3313$ WS "printf(""%d\n"", sizeof(''tmp'));"
7558ebc2 3314$ WS "exit(0);"
570bb66e
JH
3315$ WS "}"
3316$ CS
3317$ GOSUB compile
3318$ RETURN
3319$!
3320$!: locate header file
3321$findhdr:
3322$!
3323$ OS
7558ebc2
PP
3324$ WS "#if defined(__DECC) || defined(__DECCXX)"
3325$ WS "#include <stdlib.h>"
3326$ WS "#endif"
3327$ WS "#include <stdio.h>"
570bb66e 3328$ WS "#include <''tmp'>"
7558ebc2 3329$ WS "int main()"
570bb66e
JH
3330$ WS "{"
3331$ WS "printf(""define\n"");"
7558ebc2 3332$ WS "exit(0);"
570bb66e
JH
3333$ WS "}"
3334$ CS
3335$ GOSUB link_ok
3336$ RETURN
3337$!
3338$!: define an alternate in-header-list? function
3339$inhdr:
3340$!
3341$ GOSUB findhdr
3342$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
3343$ THEN
3344$ echo4 "<''tmp'> found."
3345$ tmp = "define"
3346$ ELSE
3347$ echo4 "<''tmp'> NOT found."
3348$ tmp = "undef"
3349$ ENDIF
3350$ RETURN
3351$!
3352$!: define an is-in-libc? function
3353$inlibc:
3354$ GOSUB link_ok
3355$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
3356$ THEN
3357$ echo4 "''tmp'() found."
3358$ tmp = "define"
3359$ ELSE
3360$ echo4 "''tmp'() NOT found."
3361$ tmp = "undef"
3362$ ENDIF
3363$ RETURN
3364$!
3365$!: define a shorthand compile call
3366$compile:
3367$ GOSUB link_ok
3368$just_mcr_it:
3369$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
3370$ THEN
3371$ OPEN/WRITE CONFIG []try.out
3372$ DEFINE/USER_MODE SYS$ERROR CONFIG
3373$ DEFINE/USER_MODE SYS$OUTPUT CONFIG
3374$ MCR []try.exe
3375$ CLOSE CONFIG
3376$ OPEN/READ CONFIG []try.out
3377$ READ CONFIG tmp
3378$ CLOSE CONFIG
3379$ DELETE/NOLOG/NOCONFIRM []try.out;
3380$ DELETE/NOLOG/NOCONFIRM []try.exe;
3381$ ELSE
3382$ tmp = "" ! null string default
3383$ ENDIF
3384$ RETURN
3385$!
3386$link_ok:
3387$ GOSUB compile_ok
3388$ DEFINE/USER_MODE SYS$ERROR _NLA0:
3389$ DEFINE/USER_MODE SYS$OUTPUT _NLA0:
3390$ SET NOON
3391$ IF Needs_Opt
3392$ THEN
3393$ 'ld' try.obj,try.opt/opt
3394$ link_status = $status
3395$ ELSE
3396$ 'ld' try.obj
3397$ link_status = $status
3398$ ENDIF
3399$ SET ON
3400$ IF F$SEARCH("try.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM try.obj;
3401$ RETURN
3402$!
3403$!: define a shorthand compile call for compilations that should be ok.
3404$compile_ok:
3405$ DEFINE/USER_MODE SYS$ERROR _NLA0:
3406$ DEFINE/USER_MODE SYS$OUTPUT _NLA0:
3407$ SET NOON
3408$ 'Checkcc' try.c
3409$ compile_status = $status
3410$ SET ON
3411$ DELETE/NOLOG/NOCONFIRM try.c;
3412$ RETURN
3413$!
3414$beyond_compile_ok:
3415$!
3416$! Check for __STDC__
3417$!
3418$ OS
7558ebc2
PP
3419$ WS "#if defined(__DECC) || defined(__DECCXX)"
3420$ WS "#include <stdlib.h>"
3421$ WS "#endif"
3422$ WS "#include <stdio.h>"
3423$ WS "int main()"
570bb66e 3424$ WS "{"
7558ebc2
PP
3425$ WS "#ifdef __STDC__"
3426$ WS "printf(""42\n"");"
3427$ WS "#else"
3428$ WS "printf(""1\n"");"
3429$ WS "#endif"
3430$ WS "exit(0);"
570bb66e
JH
3431$ WS "}"
3432$ CS
3433$ GOSUB compile
3434$ cpp_stuff=tmp
3435$ IF F$INTEGER(tmp) .eq. 42
3436$ THEN
3437$ echo4 "Your C compiler and pre-processor defines the symbol:"
3438$ echo4 "__STDC__"
3439$ ENDIF
3440$!
3441$! Check for double size
3442$!
3443$ echo4 "Checking to see how big your double precision numbers are..."
3444$ tmp="double"
3445$ GOSUB type_size_check
3446$ doublesize = tmp
3447$ echo "Your double is ''doublesize' bytes long."
3448$!
3449$! Check for long double size
3450$!
3451$ OS
7558ebc2 3452$ WS "#if defined(__DECC) || defined(__DECCXX)"
0e965207 3453$ WS "#pragma message disable ALL" ! VAX compilers may have distracting informationals
7558ebc2
PP
3454$ WS "#include <stdlib.h>"
3455$ WS "#endif"
3456$ WS "#include <stdio.h>"
3457$ WS "int main()"
570bb66e 3458$ WS "{"
7558ebc2
PP
3459$ WS "printf(""%d\n"", sizeof(long double));"
3460$ WS "exit(0);"
570bb66e
JH
3461$ WS "}"
3462$ CS
3463$ echo4 "Checking to see if you have long double..."
3464$ GOSUB link_ok
3465$ IF link_status .NE. good_link
3466$ THEN
3467$ longdblsize="0"
3468$ d_longdbl="undef"
3469$ echo "You do not have long double."
3470$ ELSE
3471$ echo "You have long double."
3472$ echo4 "Checking to see how big your long doubles are..."
3473$ GOSUB just_mcr_it
3474$ longdblsize = tmp
3475$ d_longdbl = "define"
3476$ echo "Your long doubles are ''longdblsize' bytes long."
3477$ ENDIF
3478$!
7f830b7b
CB
3479$ IF d_longdbl .OR. d_longdbl .EQS. "define"
3480$ THEN
3481$ d_PRIEUldbl = "define"
3482$ d_PRIFUldbl = "define"
3483$ d_PRIGUldbl = "define"
3484$ d_PRIeldbl = "define"
3485$ d_PRIfldbl = "define"
3486$ d_PRIgldbl = "define"
3487$ sPRIEUldbl = """LE"""
3488$ sPRIFUldbl = """LF"""
3489$ sPRIGUldbl = """LG"""
3490$ sPRIeldbl = """Le"""
3491$ sPRIfldbl = """Lf"""
3492$ sPRIgldbl = """Lg"""
3493$ ELSE
3494$ d_PRIEUldbl = "undef"
3495$ d_PRIFUldbl = "undef"
3496$ d_PRIGUldbl = "undef"
3497$ d_PRIeldbl = "undef"
3498$ d_PRIfldbl = "undef"
3499$ d_PRIgldbl = "undef"
3500$ sPRIEUldbl = ""
3501$ sPRIFUldbl = ""
3502$ sPRIGUldbl = ""
3503$ sPRIeldbl = ""
3504$ sPRIfldbl = ""
3505$ sPRIgldbl = ""
3506$ ENDIF
3507$ d_SCNfldbl = d_PRIfldbl
3508$ sSCNfldbl = sPRIfldbl ! expect consistency
3509$!
570bb66e
JH
3510$!: check for long long
3511$ OS
7558ebc2
PP
3512$ WS "#if defined(__DECC) || defined(__DECCXX)"
3513$ WS "#include <stdlib.h>"
3514$ WS "#endif"
3515$ WS "#include <stdio.h>"
3516$ WS "int main()"
570bb66e 3517$ WS "{"
7558ebc2
PP
3518$ WS "printf(""%d\n"", sizeof(long long));"
3519$ WS "exit(0);"
570bb66e
JH
3520$ WS "}"
3521$ CS
3522$ echo4 "Checking to see if you have long long..."
3523$ GOSUB link_ok
3524$ IF link_status .NE. good_link
3525$ THEN
3526$ longlongsize="0"
3527$ d_longlong="undef"
3528$ echo "You do not have long long."
3529$ ELSE
3530$ echo "You have long long."
3531$ echo4 "Checking to see how big your long longs are..."
3532$ GOSUB just_mcr_it
3533$ longlongsize = tmp
3534$ d_longlong = "define"
3535$ echo "Your long longs are ''longlongsize' bytes long."
3536$ ENDIF
3537$!
3538$! Check the prototype for getgid
3539$!
3540$ echo "Looking for the type for group ids returned by getgid()."
3541$ OS
7558ebc2
PP
3542$ WS "#if defined(__DECC) || defined(__DECCXX)"
3543$ WS "#include <stdlib.h>"
3544$ WS "#endif"
3545$ WS "#include <stdio.h>"
3546$ WS "#include <types.h>"
3547$ WS "int main()"
570bb66e 3548$ WS "{"
7558ebc2
PP
3549$ WS "gid_t foo;"
3550$ WS "exit(0);"
570bb66e
JH
3551$ WS "}"
3552$ CS
3553$ GOSUB compile_ok
3554$ IF compile_status .NE. good_compile
3555$ THEN
3556$! Okay, gid_t failed. Must be unsigned int
3557$ gidtype = "unsigned int"
3558$ echo4 "assuming ""''gidtype'""."
3559$ ELSE
3560$ gidtype = "gid_t"
3561$ echo4 "gid_t found."
3562$ ENDIF
3563$!
3564$! Check to see if we've got dev_t
3565$!
3566$ echo "Looking for the type for dev."
3567$ OS
7558ebc2
PP
3568$ WS "#if defined(__DECC) || defined(__DECCXX)"
3569$ WS "#include <stdlib.h>"
3570$ WS "#endif"
3571$ WS "#include <stdio.h>"
3572$ WS "#include <types.h>"
3573$ WS "int main()"
570bb66e 3574$ WS "{"
7558ebc2
PP
3575$ WS "dev_t foo;"
3576$ WS "exit(0);"
570bb66e
JH
3577$ WS "}"
3578$ CS
3579$ GOSUB compile_ok
3580$ IF compile_status .NE. good_compile
3581$ THEN
3582$! Okay, dev_t failed. Must be unsigned int
3583$ devtype = "unsigned int"
3584$ echo4 "assuming ""''devtype'""."
3585$ ELSE
3586$ devtype = "dev_t"
3587$ echo4 "dev_t found."
3588$ ENDIF
3589$!
3590$! Check to see if we've got unistd.h (which we ought to, but you never know)
3591$!
3592$ i_netdb = "undef"
3593$ tmp = "unistd.h"
3594$ GOSUB inhdr
3595$ i_unistd = tmp
3596$!
704c2eb3
JM
3597$! Check to see if we've got utime.h (which we should use if we have)
3598$!
3599$ i_netdb = "undef"
3600$ tmp = "utime.h"
3601$ GOSUB inhdr
3602$ i_utime = tmp
3603$!
41cbbefa
CB
3604$! do we have getppid()?
3605$!
3606$ IF i_unistd .EQS. "define"
3607$ THEN
3608$ OS
3609$ WS "#include <stdio.h>"
3610$ WS "#include <unistd.h>"
3611$ WS "int main() {"
3612$ WS "printf(""%d\n"",getppid());"
3613$ WS "return(0);"
3614$ WS "}"
3615$ CS
3616$ tmp = "getppid"
3617$ GOSUB inlibc
3618$ d_getppid = tmp
3619$ ELSE
3620$ d_getppid = "undef"
3621$ ENDIF
3622$!
570bb66e
JH
3623$!: see if this is a libutil.h system
3624$!
3625$ tmp = "libutil.h"
3626$ GOSUB inhdr
3627$ i_libutil = tmp
3628$!
3629$! Check to see if we've got shadow.h (probably not, but...)
3630$!
3631$ tmp = "shadow.h"
3632$ GOSUB inhdr
3633$ i_shadow = tmp
3634$!
3635$! Check to see if we've got socks.h (probably not, but...)
3636$!
3637$ tmp = "socks.h"
3638$ GOSUB inhdr
3639$ i_socks = tmp
3640$!
3641$! Check the prototype for select
3642$!
3643$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3644$ THEN
3645$ OS
7558ebc2
PP
3646$ WS "#if defined(__DECC) || defined(__DECCXX)"
3647$ WS "#include <stdlib.h>"
3648$ WS "#endif"
3649$ WS "#include <stdio.h>"
3650$ WS "#include <types.h>"
3651$ IF i_unistd .EQS. "define" THEN WS "#include <unistd.h>"
570bb66e
JH
3652$ IF Has_Socketshr
3653$ THEN
3654$ WS "#include <socketshr.h>"
3655$ ELSE
7558ebc2
PP
3656$ WS "#include <time.h>"
3657$ WS "#include <socket.h>"
570bb66e 3658$ ENDIF
7558ebc2 3659$ WS "int main()"
570bb66e 3660$ WS "{"
7558ebc2
PP
3661$ WS "fd_set *foo;"
3662$ WS "int bar;"
3663$ WS "foo = NULL;"
3664$ WS "bar = select(2, foo, foo, foo, NULL);"
3665$ WS "exit(0);"
570bb66e
JH
3666$ WS "}"
3667$ CS
3668$ GOSUB compile_ok
3669$ IF compile_status .NE. good_compile
3670$ THEN
3671$! Okay, select failed. Must be an int *
3672$ selecttype = "int *"
3673$ echo4 "select() NOT found."
3674$ ELSE
3675$ selecttype="fd_set *"
3676$ echo4 "select() found."
3677$ ENDIF
3678$ ELSE
3679$ ! No sockets, so stick in an int * : no select, so pick a harmless default
3680$ selecttype = "int *"
3681$ ENDIF
3682$!
3683$! Check to see if fd_set exists
3684$!
3685$ echo "Checking to see how well your C compiler handles fd_set and friends ..."
3686$ OS
7558ebc2
PP
3687$ WS "#if defined(__DECC) || defined(__DECCXX)"
3688$ WS "#include <stdlib.h>"
3689$ WS "#endif"
3690$ WS "#include <stdio.h>"
3691$ WS "#include <types.h>"
570bb66e
JH
3692$ IF Has_Socketshr
3693$ THEN
3694$ WS "#include <socketshr.h>"
3695$ ENDIF
3696$ IF Has_Dec_C_Sockets
3697$ THEN
7558ebc2
PP
3698$ WS "#include <time.h>"
3699$ WS "#include <socket.h>"
570bb66e 3700$ ENDIF
7558ebc2 3701$ WS "int main()"
570bb66e 3702$ WS "{"
7558ebc2
PP
3703$ WS "fd_set *foo;"
3704$ WS "int bar;"
3705$ WS "exit(0);"
570bb66e
JH
3706$ WS "}"
3707$ CS
3708$ GOSUB compile_ok
3709$ IF compile_status .ne. good_compile
3710$ THEN
3711$! Okay, fd_set failed. Must not exist
3712$ d_fd_set = "undef"
3713$ echo4 "Hmm, your compiler has some difficulty with fd_set."
3714$ ELSE
3715$ d_fd_set="define"
3716$ echo4 "Well, your system knows about the normal fd_set typedef..."
3717$ ENDIF
3718$!
3719$! Check for inttypes.h
3720$!
3721$ tmp = "inttypes.h"
3722$ GOSUB inhdr
3723$ i_inttypes = tmp
3724$!
3725$! Check to see if off64_t exists
3726$!
3727$ echo4 "Checking to see if you have off64_t..."
3728$ OS
7558ebc2
PP
3729$ WS "#if defined(__DECC) || defined(__DECCXX)"
3730$ WS "#include <stdlib.h>"
3731$ WS "#endif"
3732$ WS "#include <stdio.h>"
3733$ WS "#include <types.h>"
3734$ WS "#''i_inttypes' IIH"
3735$ WS "#ifdef IIH"
3736$ WS "#include <inttypes.h>"
3737$ WS "#endif"
3738$ WS "int main()"
570bb66e 3739$ WS "{"
7558ebc2
PP
3740$ WS "off64_t bar;"
3741$ WS "exit(0);"
570bb66e
JH
3742$ WS "}"
3743$ CS
3744$ GOSUB compile_ok
3745$ IF compile_status .EQ. good_compile
3746$ THEN
3747$ d_off64_t="define"
3748$ echo "You have off64_t."
3749$ ELSE
3750$ d_off64_t = "undef"
3751$ echo "You do not have off64_t."
3752$ ENDIF
3753$!
3754$! Check to see if fpos64_t exists
3755$!
3756$ echo4 "Checking to see if you have fpos64_t..."
3757$ OS
7558ebc2
PP
3758$ WS "#if defined(__DECC) || defined(__DECCXX)"
3759$ WS "#include <stdlib.h>"
3760$ WS "#endif"
3761$ WS "#include <stdio.h>"
3762$ WS "#include <types.h>"
3763$ WS "#''i_inttypes' IIH"
3764$ WS "#ifdef IIH"
3765$ WS "#include <inttypes.h>"
3766$ WS "#endif"
3767$ WS "int main()"
570bb66e 3768$ WS "{"
7558ebc2
PP
3769$ WS "fpos64_t bar;"
3770$ WS "exit(0);"
570bb66e
JH
3771$ WS "}"
3772$ CS
3773$ GOSUB compile_ok
3774$ IF compile_status .EQ. good_compile
3775$ THEN
3776$ d_fpos64_t="define"
3777$ echo "You have fpos64_t."
3778$ ELSE
3779$ d_fpos64_t = "undef"
3780$ echo "You do not have fpos64_t."
3781$ ENDIF
3782$!
3783$! Check to see if int64_t exists
3784$!
3785$ echo4 "Checking to see if you have int64_t..."
3786$ OS
7558ebc2
PP
3787$ WS "#if defined(__DECC) || defined(__DECCXX)"
3788$ WS "#include <stdlib.h>"
3789$ WS "#endif"
3790$ WS "#include <stdio.h>"
3791$ WS "#include <types.h>"
3792$ WS "#''i_inttypes' IIH"
3793$ WS "#ifdef IIH"
3794$ WS "#include <inttypes.h>"
3795$ WS "#endif"
3796$ WS "int main()"
570bb66e 3797$ WS "{"
7558ebc2
PP
3798$ WS "int64_t bar;"
3799$ WS "exit(0);"
570bb66e
JH
3800$ WS "}"
3801$ CS
3802$ GOSUB compile_ok
3803$ IF compile_status .EQ. good_compile
3804$ THEN
3805$ d_int64_t="define"
3806$ echo "You have int64_t."
3807$ ELSE
3808$ d_int64_t = "undef"
3809$ echo "You do not have int64_t."
3810$ ENDIF
3811$!
e0261ef8
CB
3812$! Check to see if fseeko exists
3813$!
3814$ OS
3815$ WS "#include <stdio.h>"
3816$ WS "int main()"
3817$ WS "{"
3818$ WS "FILE *f=NULL;"
3819$ WS "fseeko(f,(off_t)0,SEEK_SET);"
3820$ WS "return(0);"
3821$ WS "}"
3822$ CS
3823$ tmp = "fseeko"
3824$ GOSUB inlibc
3825$ d_fseeko = tmp
3826$!
3827$! Check to see if ftello exists
3828$!
3829$ OS
3830$ WS "#include <stdio.h>"
3831$ WS "int main()"
3832$ WS "{"
3833$ WS "FILE *f=NULL; off_t o=0;"
3834$ WS "o=ftello(f);"
3835$ WS "return(0);"
3836$ WS "}"
3837$ CS
3838$ tmp = "ftello"
3839$ GOSUB inlibc
3840$ d_ftello = tmp
3841$!
570bb66e
JH
3842$!: see if this is a netdb.h system
3843$ IF Has_Dec_C_Sockets
3844$ THEN
3845$ tmp = "netdb.h"
3846$ GOSUB inhdr
3847$ i_netdb = tmp
3848$ ENDIF
3849$!
3850$! Check for h_errno
3851$!
3852$ echo4 "Checking to see if you have h_errno..."
3853$ OS
7558ebc2
PP
3854$ WS "#if defined(__DECC) || defined(__DECCXX)"
3855$ WS "#include <stdlib.h>"
3856$ WS "#endif"
3857$ WS "#include <stdio.h>"
3858$ IF i_unistd .EQS. "define" THEN WS "#include <unistd.h>"
3859$ IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
3860$ WS "int main()"
570bb66e 3861$ WS "{"
7558ebc2
PP
3862$ WS "h_errno = 3;"
3863$ WS "exit(0);"
570bb66e
JH
3864$ WS "}"
3865$ CS
3866$ GOSUB link_ok
3867$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
3868$ THEN
3869$ d_herrno="define"
3870$ echo "You have h_errno."
3871$ ELSE
3872$ d_herrno="undef"
3873$ echo "You do not have h_errno."
3874$ ENDIF
3875$!
3876$! Check to see if gethostname exists
3877$!
3878$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
3879$ THEN
3880$ OS
7558ebc2
PP
3881$ WS "#if defined(__DECC) || defined(__DECCXX)"
3882$ WS "#include <stdlib.h>"
3883$ WS "#endif"
3884$ WS "#include <stdio.h>"
3885$ WS "#include <types.h>"
570bb66e
JH
3886$ IF Has_Socketshr
3887$ THEN
3888$ WS "#include <socketshr.h>"
3889$ ELSE
7558ebc2
PP
3890$ WS "#include <time.h>"
3891$ WS "#include <socket.h>"
570bb66e 3892$ ENDIF
7558ebc2 3893$ WS "int main()"
570bb66e 3894$ WS "{"
7558ebc2
PP
3895$ WS "char name[100];"
3896$ WS "int bar, baz;"
3897$ WS "bar = 100;"
3898$ WS "baz = gethostname(name, bar);"
3899$ WS "exit(0);"
570bb66e
JH
3900$ WS "}"
3901$ CS
3902$ GOSUB link_ok
3903$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
3904$ THEN
3905$ d_gethname="define"
3906$ echo4 "gethostname() found."
3907$ ELSE
3908$ d_gethname="undef"
3909$ ENDIF
3910$ ELSE
3911$ ! No sockets, so no gethname
3912$ d_gethname = "undef"
3913$ ENDIF
3914$!
3915$! Check for sys/file.h
3916$!
3917$ tmp = "sys/file.h"
3918$ GOSUB inhdr
3919$ i_sysfile = tmp
3920$!
670137c2
CB
3921$!
3922$! Check for sys/ioctl.h
3923$!
3924$ tmp = "sys/ioctl.h"
3925$ GOSUB inhdr
3926$ i_sysioctl = tmp
3927$!
570bb66e
JH
3928$! Check for sys/utsname.h
3929$!
3930$ tmp = "sys/utsname.h"
3931$ GOSUB inhdr
3932$ i_sysutsname = tmp
3933$!
3934$! Check for syslog.h
3935$!
3936$ tmp = "syslog.h"
3937$ GOSUB inhdr
3938$ i_syslog = tmp
3939$!
3940$! Check for poll.h
3941$!
3942$ tmp = "poll.h"
3943$ GOSUB inhdr
3944$ i_poll = tmp
3945$!
3946$! Check for sys/uio.h
3947$!
3948$ tmp = "sys/uio.h"
3949$ GOSUB inhdr
3950$ i_sysuio = tmp
3951$!
3952$! Check for sys/mode.h
3953$!
3954$ tmp = "sys/mode.h"
3955$ GOSUB inhdr
3956$ i_sysmode = tmp
3957$!
ed1b9de0
JM
3958$! Check for poll.h
3959$!
3960$ tmp = "sys/poll.h"
3961$ gosub inhdr
3962$ i_syspoll = tmp
3963$!
570bb66e
JH
3964$! Check for sys/access.h
3965$!
3966$ tmp = "sys/access.h"
3967$ GOSUB inhdr
3968$ i_sysaccess = tmp
3969$!
3970$! Check for sys/security.h
3971$!
3972$ tmp = "sys/security.h"
3973$ GOSUB inhdr
3974$ i_syssecrt = tmp
3975$!
3976$! Check for fcntl.h
3977$!
3978$ tmp = "fcntl.h"
3979$ GOSUB inhdr
3980$ i_fcntl = tmp
3981$!
3982$! Check for fcntl
3983$!
3984$ OS
7558ebc2
PP
3985$ WS "#if defined(__DECC) || defined(__DECCXX)"
3986$ WS "#include <stdlib.h>"
3987$ WS "#endif"
3988$ WS "#include <stdio.h>"
3989$ WS "#include <fcntl.h>"
3990$ WS "int main()"
570bb66e 3991$ WS "{"
7558ebc2
PP
3992$ WS "fcntl(1,2,3);"
3993$ WS "exit(0);"
570bb66e
JH
3994$ WS "}"
3995$ CS
3996$ tmp = "fcntl"
3997$ GOSUB inlibc
3998$ d_fcntl = tmp
3999$!
c44c4826
CB
4000$! Check for fcntl locking capability
4001$!
4002$ echo4 "Checking if fcntl-based file locking works... "
4003$ tmp = "undef"
4004$ IF d_fcntl .EQS. "define"
4005$ THEN
4006$ OS
4007$ WS "#include <stdio.h>"
4008$ WS "#if defined(__DECC) || defined(__DECCXX)"
4009$ WS "#include <stdlib.h>"
4010$ WS "#endif"
4011$ WS "#include <fcntl.h>"
4012$ WS "#include <unistd.h>"
4013$ WS "int main() {"
4014$ WS "#if defined(F_SETLK) && defined(F_SETLKW)"
4015$ WS " struct flock flock;"
4016$ WS " int retval, fd;"
5b36ee83 4017$ WS " fd = open(""[-]perl.c"", O_RDONLY);"
c44c4826
CB
4018$ WS " flock.l_type = F_RDLCK;"
4019$ WS " flock.l_whence = SEEK_SET;"
4020$ WS " flock.l_start = flock.l_len = 0;"
4021$ WS " retval = fcntl(fd, F_SETLK, &flock);"
4022$ WS " close(fd);"
4023$ WS " (retval < 0 ? printf(""undef\n"") : printf(""define\n""));"
4024$ WS "#else"
4025$ WS " printf(""undef\n"");"
4026$ WS "#endif"
4027$ WS "}"
4028$ CS
4029$ GOSUB link_ok
4030$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
4031$ THEN
4032$ GOSUB just_mcr_it
4033$ IF tmp .EQS. "define"
4034$ THEN
4035$ echo4 "Yes, it seems to work."
4036$ ELSE
4037$ echo4 "Nope, it didn't work."
4038$ ENDIF
4039$ ELSE
4040$ echo4 "I'm unable to compile the test program, so I'll assume not."
4041$ tmp = "undef"
4042$ ENDIF
4043$ ELSE
4044$ echo4 "Nope, since you don't even have fcntl()."
4045$ ENDIF
4046$ d_fcntl_can_lock = tmp
4047$!
570bb66e
JH
4048$! Check for memchr
4049$!
4050$ OS
7558ebc2
PP
4051$ WS "#if defined(__DECC) || defined(__DECCXX)"
4052$ WS "#include <stdlib.h>"
4053$ WS "#endif"
4054$ WS "#include <string.h>"
4055$ WS "int main()"
570bb66e 4056$ WS "{"
7558ebc2 4057$ WS "char * place;"
a5ff3b9a 4058$ WS "place = memchr(""foo"", 47, 3);"
7558ebc2 4059$ WS "exit(0);"
570bb66e
JH
4060$ WS "}"
4061$ CS
4062$ tmp = "memchr"
4063$ GOSUB inlibc
4064$ d_memchr = tmp
4065$!
4066$! Check for strtoull
4067$!
4068$ OS
7558ebc2
PP
4069$ WS "#if defined(__DECC) || defined(__DECCXX)"
4070$ WS "#include <stdlib.h>"
4071$ WS "#endif"
4072$ WS "#include <string.h>"
4073$ WS "int main()"
570bb66e 4074$ WS "{"
7558ebc2
PP
4075$ WS "unsigned __int64 result;"
4076$ WS "result = strtoull(""123123"", NULL, 10);"
4077$ WS "exit(0);"
570bb66e
JH
4078$ WS "}"
4079$ CS
4080$ tmp = "strtoull"
4081$ GOSUB inlibc
4082$ d_strtoull = tmp
4083$!
4084$! Check for strtouq
4085$!
4086$ OS
7558ebc2
PP
4087$ WS "#if defined(__DECC) || defined(__DECCXX)"
4088$ WS "#include <stdlib.h>"
4089$ WS "#endif"
4090$ WS "#include <string.h>"
4091$ WS "int main()"
570bb66e 4092$ WS "{"
7558ebc2
PP
4093$ WS "unsigned __int64 result;"
4094$ WS "result = strtouq(""123123"", NULL, 10);"
4095$ WS "exit(0);"
570bb66e
JH
4096$ WS "}"
4097$ CS
4098$ tmp = "strtouq"
4099$ GOSUB inlibc
4100$ d_strtouq = tmp
4101$!
4102$! Check for strtoll
4103$!
4104$ OS
7558ebc2
PP
4105$ WS "#if defined(__DECC) || defined(__DECCXX)"
4106$ WS "#include <stdlib.h>"
4107$ WS "#endif"
4108$ WS "#include <string.h>"
4109$ WS "int main()"
570bb66e 4110$ WS "{"
7558ebc2
PP
4111$ WS "__int64 result;"
4112$ WS "result = strtoll(""123123"", NULL, 10);"
4113$ WS "exit(0);"
570bb66e
JH
4114$ WS "}"
4115$ CS
4116$ tmp = "strtoll"
4117$ GOSUB inlibc
4118$ d_strtoll = tmp
4119$!
d0e6d399
NC
4120$! Check for strtoq
4121$!
4122$ OS
4123$ WS "#if defined(__DECC) || defined(__DECCXX)"
4124$ WS "#include <stdlib.h>"
28e5dec8
JH
4125$ WS "#endif"
4126$ WS "#include <string.h>"
4127$ WS "int main()"
4128$ WS "{"
4129$ WS "__int64 result;"
4130$ WS "result = strtoq(""123123"", NULL, 10);"
4131$ WS "exit(0);"
4132$ WS "}"
4133$ CS
4134$ tmp = "strtoq"
4135$ GOSUB inlibc
4136$ d_strtoq = tmp
4137$!
570bb66e
JH
4138$! Check for strtold
4139$!
4140$ OS
7558ebc2
PP
4141$ WS "#if defined(__DECC) || defined(__DECCXX)"
4142$ WS "#include <stdlib.h>"
4143$ WS "#endif"
4144$ WS "#include <string.h>"
4145$ WS "int main()"
570bb66e 4146$ WS "{"
7558ebc2
PP
4147$ WS "long double result;"
4148$ WS "result = strtold(""123123"", NULL, 10);"
4149$ WS "exit(0);"
570bb66e
JH
4150$ WS "}"
4151$ CS
4152$ tmp = "strtold"
4153$ GOSUB inlibc
4154$ d_strtold = tmp
4155$!
4156$! Check for atoll
4157$!
4158$ OS
7558ebc2
PP
4159$ WS "#if defined(__DECC) || defined(__DECCXX)"
4160$ WS "#include <stdlib.h>"
4161$ WS "#endif"
4162$ WS "#include <string.h>"
4163$ WS "int main()"
570bb66e 4164$ WS "{"
7558ebc2
PP
4165$ WS " __int64 result;"
4166$ WS "result = atoll(""123123"");"
4167$ WS "exit(0);"
570bb66e
JH
4168$ WS "}"
4169$ CS
4170$ tmp = "atoll"
4171$ GOSUB inlibc
4172$ d_atoll = tmp
4173$!
4174$! Check for atolf
4175$!
4176$ OS
7558ebc2
PP
4177$ WS "#if defined(__DECC) || defined(__DECCXX)"
4178$ WS "#include <stdlib.h>"
4179$ WS "#endif"
4180$ WS "#include <string.h>"
4181$ WS "int main()"
570bb66e 4182$ WS "{"
7558ebc2
PP
4183$ WS "long double"
4184$ WS "result = atolf(""123123"");"
4185$ WS "exit(0);"
570bb66e
JH
4186$ WS "}"
4187$ CS
4188$ tmp = "atolf"
4189$ GOSUB inlibc
4190$ d_atolf = tmp
4191$!
4192$! Check for access
4193$!
4194$ OS
7558ebc2
PP
4195$ WS "#if defined(__DECC) || defined(__DECCXX)"
4196$ WS "#include <stdlib.h>"
4197$ WS "#endif"
4198$ WS "#include <stdio.h>"
4199$ WS "int main()"
570bb66e 4200$ WS "{"
7558ebc2
PP
4201$ WS "access(""foo"", F_OK);"
4202$ WS "exit(0);"
570bb66e
JH
4203$ WS "}"
4204$ CS
4205$ tmp = "acess"
4206$ GOSUB inlibc
4207$ d_access = tmp
4208$!
4209$! Check for bzero
4210$!
4211$ OS
7558ebc2
PP
4212$ WS "#if defined(__DECC) || defined(__DECCXX)"
4213$ WS "#include <stdlib.h>"
4214$ WS "#endif"
4215$ WS "#include <stdio.h>"
4216$ WS "#include <strings.h>"
4217$ WS "int main()"
570bb66e 4218$ WS "{"
7558ebc2
PP
4219$ WS "char foo[10];"
4220$ WS "bzero(foo, 10);"
4221$ WS "exit(0);"
570bb66e
JH
4222$ WS "}"
4223$ CS
4224$ tmp = "bzero"
4225$ GOSUB inlibc
4226$ d_bzero = tmp
4227$!
4228$! Check for bcopy
4229$!
4230$ OS
7558ebc2
PP
4231$ WS "#if defined(__DECC) || defined(__DECCXX)"
4232$ WS "#include <stdlib.h>"
4233$ WS "#endif"
4234$ WS "#include <stdio.h>"
4235$ WS "#include <strings.h>"
4236$ WS "int main()"
570bb66e 4237$ WS "{"
7558ebc2
PP
4238$ WS "char foo[10], bar[10];"
4239$ WS "bcopy(""foo"", bar, 3);"
4240$ WS "exit(0);"
570bb66e
JH
4241$ WS "}"
4242$ CS
4243$ tmp = "bcopy"
4244$ GOSUB inlibc
4245$ d_bcopy = tmp
4246$!
4247$! Check for mkstemp
4248$!
4249$ OS
7558ebc2
PP
4250$ WS "#if defined(__DECC) || defined(__DECCXX)"
4251$ WS "#include <stdlib.h>"
4252$ WS "#endif"
4253$ WS "#include <stdio.h>"
4254$ WS "int main()"
570bb66e 4255$ WS "{"
7558ebc2
PP
4256$ WS "mkstemp(""foo"");"
4257$ WS "exit(0);"
570bb66e
JH
4258$ WS "}"
4259$ CS
4260$ tmp = "mkstemp"
4261$ GOSUB inlibc
4262$ d_mkstemp = tmp
4263$!
4264$! Check for mkstemps
4265$!
4266$ OS
7558ebc2
PP
4267$ WS "#if defined(__DECC) || defined(__DECCXX)"
4268$ WS "#include <stdlib.h>"
4269$ WS "#endif"
4270$ WS "#include <stdio.h>"
4271$ WS "int main()"
570bb66e 4272$ WS "{"
7558ebc2
PP
4273$ WS "mkstemps(""foo"", 1);"
4274$ WS "exit(0);"
570bb66e
JH
4275$ WS "}"
4276$ CS
4277$ tmp = "mkstemps"
4278$ GOSUB inlibc
4279$ d_mkstemps = tmp
4280$!
570bb66e
JH
4281$! Check for mkdtemp
4282$!
4283$ OS
7558ebc2
PP
4284$ WS "#if defined(__DECC) || defined(__DECCXX)"
4285$ WS "#include <stdlib.h>"
4286$ WS "#endif"
4287$ WS "#include <stdio.h>"
4288$ WS "int main()"
570bb66e 4289$ WS "{"
7558ebc2
PP
4290$ WS "mkdtemp(""foo"");"
4291$ WS "exit(0);"
570bb66e
JH
4292$ WS "}"
4293$ CS
4294$ tmp = "mkdtemp"
4295$ GOSUB inlibc
4296$ d_mkdtemp = tmp
4297$!
d2d53deb
CB
4298$! Check for poll
4299$!
4300$ if i_poll .eqs. "define"
4301$ then
4302$ OS
4303$ WS "#if defined(__DECC) || defined(__DECCXX)"
4304$ WS "#include <stdlib.h>"
4305$ WS "#endif"
4306$ WS "#include <poll.h>"
4307$ WS "int main()"
4308$ WS "{"
4309$ WS "struct pollfd pfd;"
4310$ WS "int count=poll(&pfd,1,0);"
4311$ WS "exit(0);"
4312$ WS "}"
4313$ CS
4314$ tmp = "poll"
4315$ GOSUB inlibc
4316$ d_poll = tmp
4317$ else
4318$ d_poll = "undef"
4319$ endif
4320$!
570bb66e
JH
4321$! Check for setvbuf
4322$!
4323$ OS
7558ebc2
PP
4324$ WS "#if defined(__DECC) || defined(__DECCXX)"
4325$ WS "#include <stdlib.h>"
4326$ WS "#endif"
4327$ WS "#include <stdio.h>"
4328$ WS "int main()"
570bb66e 4329$ WS "{"
7558ebc2
PP
4330$ WS "FILE *foo;"
4331$ WS "char Buffer[99];"
4332$ WS "foo = fopen(""foo"", ""r"");"
4333$ WS "setvbuf(foo, Buffer, 0, 0);"
4334$ WS "exit(0);"
570bb66e
JH
4335$ WS "}"
4336$ CS
4337$ tmp = "setvbuf"
4338$ GOSUB inlibc
4339$ d_setvbuf = tmp
4340$!
c998f3c7
PP
4341$! see if sfio.h is available
4342$! see if sfio library is available
4343$! Ok, but do we want to use it.
4344$! IF F$TYPE(usesfio) .EQS. "" THEN usesfio = "undef"
4345$! IF val .EQS. "define"
4346$! THEN
4347$! IF usesfio .EQS. "define"
4348$! THEN dflt = "y"
4349$! ELSE dflt = "n"
4350$! ENDIF
4351$! echo "''package' can use the sfio library, but it is experimental."
4352$! IF useperlio .EQS. "undef"
4353$! THEN
4354$! echo "For sfio also the PerlIO abstraction layer is needed."
4355$! echo "Earlier you said you would not want that."
4356$! ENDIF
4357$! rp="You seem to have sfio available, do you want to try using it? [''dflt'] "
4358$! GOSUB myread
4359$! IF ans .EQS. "" THEN ans = dflt
4360$! IF ans
4361$! THEN
4362$! echo "Ok, turning on both sfio and PerlIO, then."
4363$! useperlio="define"
4364$! val="define"
4365$! ELSE
4366$! echo "Ok, avoiding sfio this time. I'll use stdio instead."
4367$! val="undef"
4368$! ENDIF
4369$! ELSE
4370$! IF usesfio .EQS. "define"
4371$! THEN
4372$! echo4 "Sorry, cannot find sfio on this machine."
4373$! echo4 "Ignoring your setting of usesfio=''usesfio'."
4374$! val="undef"
4375$! ENDIF
4376$! ENDIF
4377$!
570bb66e
JH
4378$! Check for setenv
4379$!
4380$ OS
7558ebc2
PP
4381$ WS "#if defined(__DECC) || defined(__DECCXX)"
4382$ WS "#include <stdlib.h>"
4383$ WS "#endif"
4384$ WS "#include <stdio.h>"
4385$ WS "int main()"
570bb66e 4386$ WS "{"
7558ebc2
PP
4387$ WS "setenv(""FOO"", ""BAR"", 0);"
4388$ WS "exit(0);"
570bb66e
JH
4389$ WS "}"
4390$ CS
4391$ tmp = "setenv"
4392$ GOSUB inlibc
4393$ d_setenv = tmp
4394$!
4395$! Check for setproctitle
4396$!
4397$ OS
7558ebc2
PP
4398$ WS "#if defined(__DECC) || defined(__DECCXX)"
4399$ WS "#include <stdlib.h>"
4400$ WS "#endif"
4401$ WS "#include <stdio.h>"
4402$ WS "int main()"
570bb66e 4403$ WS "{"
7558ebc2
PP
4404$ WS "setproctitle(""%s"", ""FOO"");"
4405$ WS "exit(0);"
570bb66e
JH
4406$ WS "}"
4407$ CS
4408$ tmp = "setproctitle"
4409$ GOSUB inlibc
4410$ d_setproctitle = tmp
4411$!
4412$! Check for <netinet/in.h>
4413$!
4414$ IF Has_Dec_C_Sockets .or. Has_Socketshr
4415$ THEN
4416$ tmp = "netinet/in.h"
4417$ GOSUB inhdr
4418$ i_niin = tmp
4419$ ELSE
4420$ i_niin="undef"
4421$ ENDIF
4422$!
4423$! Check for <netinet/tcp.h>
4424$!
4425$ IF Has_Dec_C_Sockets .or. Has_Socketshr
4426$ THEN
4427$ tmp = "netinet/tcp.h"
4428$ GOSUB inhdr
4429$ i_netinettcp = tmp
4430$ ELSE
4431$ i_netinettcp="undef"
4432$ ENDIF
4433$!
4434$! Check for endhostent
4435$!
4436$ IF Has_Dec_C_Sockets .or. Has_Socketshr
4437$ THEN
4438$ OS
7558ebc2
PP
4439$ WS "#if defined(__DECC) || defined(__DECCXX)"
4440$ WS "#include <stdlib.h>"
4441$ WS "#endif"
4442$ WS "#include <stdio.h>"
570bb66e
JH
4443$ IF Has_Socketshr
4444$ THEN WS "#include <socketshr.h>"
7558ebc2 4445$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4446$ ENDIF
7558ebc2 4447$ WS "int main()"
570bb66e 4448$ WS "{"
7558ebc2
PP
4449$ WS "endhostent();"
4450$ WS "exit(0);"
570bb66e
JH
4451$ WS "}"
4452$ CS
4453$ tmp = "endhostent"
4454$ GOSUB inlibc
4455$ d_endhent = tmp
4456$ ELSE
4457$ d_endhent="undef"
4458$ ENDIF
4459$!
4460$! Check for endnetent
4461$!
4462$ IF Has_Dec_C_Sockets .or. Has_Socketshr
4463$ THEN
4464$ OS
7558ebc2
PP
4465$ WS "#if defined(__DECC) || defined(__DECCXX)"
4466$ WS "#include <stdlib.h>"
4467$ WS "#endif"
4468$ WS "#include <stdio.h>"
570bb66e
JH
4469$ IF Has_Socketshr
4470$ THEN WS "#include <socketshr.h>"
7558ebc2 4471$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e
JH
4472$ ENDIF
4473$ WS "int main()"
4474$ WS "{"
4475$ WS "endnetent();"
4476$ WS "exit(0);"
4477$ WS "}"
4478$ CS
4479$ tmp = "endnetent"
4480$ GOSUB inlibc
4481$ d_endnent = tmp
4482$ ELSE
4483$ d_endnent="undef"
4484$ ENDIF
4485$!
4486$! Check for endprotoent
4487$!
4488$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4489$ THEN
4490$ OS
7558ebc2
PP
4491$ WS "#if defined(__DECC) || defined(__DECCXX)"
4492$ WS "#include <stdlib.h>"
4493$ WS "#endif"
4494$ WS "#include <stdio.h>"
570bb66e
JH
4495$ IF Has_Socketshr
4496$ THEN WS "#include <socketshr.h>"
7558ebc2 4497$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4498$ ENDIF
7558ebc2 4499$ WS "int main()"
570bb66e 4500$ WS "{"
7558ebc2
PP
4501$ WS "endprotoent();"
4502$ WS "exit(0);"
570bb66e
JH
4503$ WS "}"
4504$ CS
4505$ tmp = "endprotoent"
4506$ GOSUB inlibc
4507$ d_endpent = tmp
4508$ ELSE
4509$ d_endpent="undef"
4510$ ENDIF
4511$!
4512$! Check for endservent
4513$!
4514$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4515$ THEN
4516$ OS
7558ebc2
PP
4517$ WS "#if defined(__DECC) || defined(__DECCXX)"
4518$ WS "#include <stdlib.h>"
4519$ WS "#endif"
4520$ WS "#include <stdio.h>"
570bb66e
JH
4521$ IF Has_Socketshr
4522$ THEN WS "#include <socketshr.h>"
7558ebc2 4523$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4524$ ENDIF
7558ebc2 4525$ WS "int main()"
570bb66e 4526$ WS "{"
7558ebc2
PP
4527$ WS "endservent();"
4528$ WS "exit(0);"
570bb66e
JH
4529$ WS "}"
4530$ CS
4531$ tmp = "endservent"
4532$ GOSUB inlibc
4533$ d_endsent = tmp
4534$ ELSE
4535$ d_endsent="undef"
4536$ ENDIF
4537$!
4538$! Check for sethostent
4539$!
4540$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4541$ THEN
4542$ OS
7558ebc2
PP
4543$ WS "#if defined(__DECC) || defined(__DECCXX)"
4544$ WS "#include <stdlib.h>"
4545$ WS "#endif"
4546$ WS "#include <stdio.h>"
570bb66e
JH
4547$ IF Has_Socketshr
4548$ THEN WS "#include <socketshr.h>"
7558ebc2 4549$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4550$ ENDIF
7558ebc2 4551$ WS "int main()"
570bb66e 4552$ WS "{"
7558ebc2
PP
4553$ WS "sethostent(1);"
4554$ WS "exit(0);"
570bb66e
JH
4555$ WS "}"
4556$ CS
4557$ tmp = "sethostent"
4558$ GOSUB inlibc
4559$ d_sethent = tmp
4560$ ELSE
4561$ d_sethent="undef"
4562$ ENDIF
4563$!
4564$! Check for setnetent
4565$!
4566$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4567$ THEN
4568$ OS
7558ebc2
PP
4569$ WS "#if defined(__DECC) || defined(__DECCXX)"
4570$ WS "#include <stdlib.h>"
4571$ WS "#endif"
4572$ WS "#include <stdio.h>"
570bb66e
JH
4573$ IF Has_Socketshr
4574$ THEN WS "#include <socketshr.h>"
7558ebc2 4575$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4576$ ENDIF
7558ebc2 4577$ WS "int main()"
570bb66e 4578$ WS "{"
7558ebc2
PP
4579$ WS "setnetent(1);"
4580$ WS "exit(0);"
570bb66e
JH
4581$ WS "}"
4582$ CS
4583$ tmp = "setnetent"
4584$ GOSUB inlibc
4585$ d_setnent = tmp
4586$ ELSE
4587$ d_setnent="undef"
4588$ ENDIF
4589$!
4590$! Check for setprotoent
4591$!
4592$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4593$ THEN
4594$ OS
7558ebc2
PP
4595$ WS "#if defined(__DECC) || defined(__DECCXX)"
4596$ WS "#include <stdlib.h>"
4597$ WS "#endif"
4598$ WS "#include <stdio.h>"
570bb66e
JH
4599$ IF Has_Socketshr
4600$ THEN WS "#include <socketshr.h>"
7558ebc2 4601$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4602$ ENDIF
7558ebc2 4603$ WS "int main()"
570bb66e 4604$ WS "{"
7558ebc2
PP
4605$ WS "setprotoent(1);"
4606$ WS "exit(0);"
570bb66e
JH
4607$ WS "}"
4608$ CS
4609$ tmp = "setprotoent"
4610$ GOSUB inlibc
4611$ d_setpent = tmp
4612$ ELSE
4613$ d_setpent="undef"
4614$ ENDIF
4615$!
4616$! Check for setservent
4617$!
4618$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4619$ THEN
4620$ OS
7558ebc2
PP
4621$ WS "#if defined(__DECC) || defined(__DECCXX)"
4622$ WS "#include <stdlib.h>"
4623$ WS "#endif"
4624$ WS "#include <stdio.h>"
570bb66e
JH
4625$ IF Has_Socketshr
4626$ THEN WS "#include <socketshr.h>"
7558ebc2 4627$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4628$ ENDIF
7558ebc2 4629$ WS "int main()"
570bb66e 4630$ WS "{"
7558ebc2
PP
4631$ WS "setservent(1);"
4632$ WS "exit(0);"
570bb66e
JH
4633$ WS "}"
4634$ CS
4635$ tmp = "setservent"
4636$ GOSUB inlibc
4637$ d_setsent = tmp
4638$ ELSE
4639$ d_setsent="undef"
4640$ ENDIF
4641$!
4642$! Check for gethostent
4643$!
4644$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4645$ THEN
4646$ OS
7558ebc2
PP
4647$ WS "#if defined(__DECC) || defined(__DECCXX)"
4648$ WS "#include <stdlib.h>"
4649$ WS "#endif"
4650$ WS "#include <stdio.h>"
570bb66e
JH
4651$ IF Has_Socketshr
4652$ THEN WS "#include <socketshr.h>"
7558ebc2 4653$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4654$ ENDIF
7558ebc2 4655$ WS "int main()"
570bb66e 4656$ WS "{"
7558ebc2
PP
4657$ WS "gethostent();"
4658$ WS "exit(0);"
570bb66e
JH
4659$ WS "}"
4660$ CS
4661$ tmp = "gethostent"
4662$ GOSUB inlibc
4663$ d_gethent = tmp
4664$ ELSE
4665$ d_gethent="undef"
4666$ ENDIF
4667$!
4668$! Check for getnetent
4669$!
4670$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4671$ THEN
4672$ OS
7558ebc2
PP
4673$ WS "#if defined(__DECC) || defined(__DECCXX)"
4674$ WS "#include <stdlib.h>"
4675$ WS "#endif"
4676$ WS "#include <stdio.h>"
570bb66e
JH
4677$ IF Has_Socketshr
4678$ THEN WS "#include <socketshr.h>"
7558ebc2 4679$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4680$ ENDIF
7558ebc2 4681$ WS "int main()"
570bb66e 4682$ WS "{"
7558ebc2
PP
4683$ WS "getnetent();"
4684$ WS "exit(0);"
570bb66e
JH
4685$ WS "}"
4686$ CS
4687$ tmp = "getnetent"
4688$ GOSUB inlibc
4689$ d_getnent = tmp
4690$ ELSE
4691$ d_getnent="undef"
4692$ ENDIF
4693$!
4694$! Check for getprotoent
4695$!
4696$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4697$ THEN
4698$ OS
7558ebc2
PP
4699$ WS "#if defined(__DECC) || defined(__DECCXX)"
4700$ WS "#include <stdlib.h>"
4701$ WS "#endif"
4702$ WS "#include <stdio.h>"
570bb66e
JH
4703$ IF Has_Socketshr
4704$ THEN WS "#include <socketshr.h>"
7558ebc2 4705$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4706$ ENDIF
7558ebc2 4707$ WS "int main()"
570bb66e 4708$ WS "{"
7558ebc2
PP
4709$ WS "getprotoent();"
4710$ WS "exit(0);"
570bb66e
JH
4711$ WS "}"
4712$ CS
4713$ tmp = "getprotoent"
4714$ GOSUB inlibc
4715$ d_getpent = tmp
4716$ ELSE
4717$ d_getpent="undef"
4718$ ENDIF
4719$!
4720$! Check for getservent
4721$!
4722$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4723$ THEN
4724$ OS
7558ebc2
PP
4725$ WS "#if defined(__DECC) || defined(__DECCXX)"
4726$ WS "#include <stdlib.h>"
4727$ WS "#endif"
4728$ WS "#include <stdio.h>"
570bb66e
JH
4729$ IF Has_Socketshr
4730$ THEN WS "#include <socketshr.h>"
7558ebc2 4731$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4732$ ENDIF
7558ebc2 4733$ WS "int main()"
570bb66e 4734$ WS "{"
7558ebc2
PP
4735$ WS "getservent();"
4736$ WS "exit(0);"
570bb66e
JH
4737$ WS "}"
4738$ CS
4739$ tmp = "getservent"
4740$ GOSUB inlibc
4741$ d_getsent = tmp
4742$ ELSE
4743$ d_getsent="undef"
4744$ ENDIF
4745$!
02e1c2f1
CB
4746$! Check for nanosleep
4747$!
4748$ OS
4749$ WS "#if defined(__DECC) || defined(__DECCXX)"
4750$ WS "#include <stdlib.h>"
4751$ WS "#endif"
4752$ WS "#include <time.h>"
4753$ WS "int main()"
4754$ WS "{"
4755$ WS "int asleep = nanosleep(NULL,NULL);"
4756$ WS "exit(0);"
4757$ WS "}"
4758$ CS
4759$ tmp = "nanosleep"
4760$ GOSUB inlibc
4761$ d_nanosleep = tmp
4762$!
570bb66e
JH
4763$! Check for socklen_t
4764$!
4765$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
4766$ THEN
4767$ echo4 "Checking to see if you have socklen_t..."
4768$ OS
7558ebc2
PP
4769$ WS "#if defined(__DECC) || defined(__DECCXX)"
4770$ WS "#include <stdlib.h>"
4771$ WS "#endif"
4772$ WS "#include <stdio.h>"
570bb66e
JH
4773$ IF Has_Socketshr
4774$ THEN WS "#include <socketshr.h>"
7558ebc2 4775$ ELSE IF i_netdb .EQS. "define" THEN WS "#include <netdb.h>"
570bb66e 4776$ ENDIF
7558ebc2 4777$ WS "int main()"
570bb66e 4778$ WS "{"
7558ebc2
PP
4779$ WS "socklen_t x = 16;"
4780$ WS "exit(0);"
570bb66e
JH
4781$ WS "}"
4782$ CS
4783$ GOSUB link_ok
4784$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
4785$ THEN
4786$ d_socklen_t="define"
4787$ echo "You have socklen_t."
4788$ ELSE
4789$ d_socklen_t="undef"
4790$ echo "You do not have socklen_t."
4791$ ENDIF
4792$ ELSE
4793$ d_socklen_t="undef"
4794$ ENDIF
4795$!
4796$! Check for pthread_yield
4797$!
4798$ IF use_threads
4799$ THEN
4800$ OS
7558ebc2
PP
4801$ WS "#if defined(__DECC) || defined(__DECCXX)"
4802$ WS "#include <stdlib.h>"
4803$ WS "#endif"
4804$ WS "#include <pthread.h>"
4805$ WS "#include <stdio.h>"
4806$ WS "int main()"
570bb66e 4807$ WS "{"
7558ebc2
PP
4808$ WS "pthread_yield();"
4809$ WS "exit(0);"
570bb66e
JH
4810$ WS "}"
4811$ CS
4812$ tmp = "pthread_yield"
4813$ GOSUB inlibc
4814$ d_pthread_yield = tmp
4815$ ELSE
4816$ d_pthread_yield="undef"
4817$ ENDIF
4818$!
4819$! Check for sched_yield
4820$!
4821$ IF use_threads
4822$ THEN
4823$ OS
7558ebc2
PP
4824$ WS "#if defined(__DECC) || defined(__DECCXX)"
4825$ WS "#include <stdlib.h>"
4826$ WS "#endif"
4827$ WS "#include <pthread.h>"
4828$ WS "#include <stdio.h>"
4829$ WS "int main()"
570bb66e 4830$ WS "{"
7558ebc2
PP
4831$ WS "sched_yield();"
4832$ WS "exit(0);"
570bb66e
JH
4833$ WS "}"
4834$ CS
4835$ tmp = "sched_yield"
4836$ GOSUB inlibc
4837$ d_sched_yield = tmp
4838$ IF d_sched_yield .EQS. "define"
4839$ THEN sched_yield = "sched_yield"
4840$ ELSE sched_yield = " "
4841$ ENDIF
4842$ ELSE
4843$ d_sched_yield="undef"
4844$ sched_yield = " "
4845$ ENDIF
4846$!
e0e3c57a
JH
4847$! Check for pthread_attr_setscope and PTHREAD_SCOPE_SYSTEM.
4848$! (The actual test is to be written.)
4849$!
4850$ d_pthread_attr_setscope="undef"
4851$!
570bb66e
JH
4852$! Check for generic pointer size
4853$!
4854$ echo4 "Checking to see how big your pointers are..."
4855$ OS
7558ebc2
PP
4856$ WS "#if defined(__DECC) || defined(__DECCXX)"
4857$ WS "#include <stdlib.h>"
4858$ WS "#endif"
4859$ WS "#include <stdio.h>"
4860$ WS "int main()"
570bb66e 4861$ WS "{"
7558ebc2
PP
4862$ WS "int foo;"
4863$ WS "foo = sizeof(char *);"
4864$ WS "printf(""%d\n"", foo);"
4865$ WS "exit(0);"
570bb66e
JH
4866$ WS "}"
4867$ CS
4868$ tmp = "char *"
4869$ GOSUB type_size_check
4870$ ptrsize = tmp
4871$ echo "Your pointers are ''ptrsize' bytes long."
4872$!
4873$! Check for size_t size
4874$!
4875$ tmp = "size_t"
4876$ zzz = tmp
4877$ echo4 "Checking the size of ''zzz'..."
4878$ GOSUB type_size_check
4879$ sizesize = tmp
4880$ echo "Your ''zzz' size is ''sizesize' bytes."
4881$!
e0261ef8
CB
4882$! Check for _LARGEFILE capability.
4883$!
4884$ off_t_size = 4
4885$ OS
4886$ WS "#define _LARGEFILE"
4887$ WS "#include <stdio.h>"
4888$ WS "int main()"
4889$ WS "{"
4890$ WS "printf(""%d\n"", sizeof(off_t));"
4891$ WS "return(0);"
4892$ WS "}"
4893$ CS
4894$ GOSUB link_ok
4895$ IF link_status .EQ. good_link
4896$ THEN
4897$ GOSUB just_mcr_it
4898$ off_t_size = tmp
4899$ ENDIF
4900$ echo "Your off_t size is ''off_t_size' bytes when _LARGEFILE is defined."
4901$ IF off_t_size .ne. 8 .AND. (uselargefiles .OR. uselargefiles .eqs. "define")
4902$ THEN
4903$ echo4 "You configured with -Duselargefiles but your CRTL does not support _LARGEFILE."
4904$ echo4 "I'm disabling large file support."
4905$ uselargefiles = "undef"
4906$ ENDIF
4907$!
96021e87
JM
4908$! Tests for hard link, symbolic links, and 7.3 + CRTL features
4909$!
4910$ d_lchown = "undef"
4911$ d_link = "undef"
4912$ d_lstat = "undef"
4913$ d_readlink = "undef"
4914$ d_symlink = "undef"
4915$ d_realpath = "undef"
96021e87
JM
4916$!
4917$! Hard link support has been present since 7.3-1 except for the
4918$! easy to use DCL test to see if hardlinks are enabled on the build
4919$! disk. That would require more work to test, and I am only testing
4920$! this on 8.2, so that is why the 8.2 test.
4921$!
d00eb249 4922$ IF (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
96021e87
JM
4923$ THEN
4924$ IF f$getdvi("SYS$DISK","HARDLINKS_SUPPORTED")
4925$ THEN
4926$ echo "I Found 64 bit OpenVMS 8.2 or later, and hard links enabled on build disk."
4927$ echo "I will build with hard link support"
4928$ d_link = "define"
4929$ ELSE
4930$ echo "I Found 64 bit OpenVMS 8.2 or later, and hard links disabled on build disk."
4931$ echo "I will not build with hard link support."
4932$ ENDIF
4933$ ELSE
d00eb249 4934$ echo4 "I can not detect if your CRTL and build disk support hard links."
96021e87
JM
4935$ echo4 "I am disabling hard link support."
4936$ ENDIF
4937$!
4938$ IF uselargefiles .OR. uselargefiles .eqs. "define"
4939$ THEN
d00eb249 4940$ IF (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
96021e87 4941$ THEN
fe6e2aaa
CB
4942$ echo4 "Largefile support enabled, so enabling standard stat support too."
4943$ usestdstat = "y"
96021e87
JM
4944$ echo4 -
4945 "Looking for the realpath() function to indicate symbolic link support..."
4946$ OS
4947$! WS "#include <stdlib.h>"
4948$ WS "void exit(int foo);"
4949$ WS "char *realpath(const char *file_name, char * resolved_name, ...);"
4950$ WS "int main()"
4951$ WS "{"
4952$ WS "char result[255];"
4953$ WS "realpath(""foo"",result);"
4954$ WS "exit(0);"
4955$ WS "}"
4956$ CS
4957$ GOSUB link_ok
4958$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
4959$ THEN
4960$ echo -
4961 "Found realpath() which indicates symbolic link support is present."
4962$ d_lchown = "define"
4963$ d_lstat = "define"
4964$ d_readlink = "define"
4965$ d_symlink = "define"
4966$! d_realpath = "define" ! Perl will not put it in the config.h file?
4967$! Perl apparently does not use a built in realpath() on other platforms,
4968$! but there is a severe performance penatly on OpenVMS to use the Perl
4969$! script that implements a realpath(). The d_symlink symbol is used
4970$! as a replacement for the d_realpath since they are related and both
4971$! were activated by the CRTL at the same time.
4972$!
4973$ ELSE
4974$ echo4 "Your system does not support symbolic links."
4975$ echo4 "I am disabling symbolic link support."
4976$ ENDIF
4977$ ELSE
4978$ echo4 "Your system does not support symbolic links."
4979$ echo4 "I am disabling symbolic link support."
4980$ ENDIF
4981$ ELSE
d00eb249 4982$ IF (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
96021e87 4983$ THEN
d00eb249 4984$ echo4 "-Duselargefiles is required for symbolic link support."
96021e87
JM
4985$ echo4 "You did not specify that, so I am disabling symbolic link support."
4986$ ENDIF
4987$ ENDIF
4988$!
9fa802f3
CB
4989$!
4990$! Check for grp.h -- should be 7.3 and later, but test to be sure
4991$!
4992$ tmp = "grp.h"
4993$ GOSUB inhdr
4994$ i_grp = tmp
4995$!
96021e87
JM
4996$! VMS V7.3-2 powered options
4997$! We know that it is only available for V7.3-2 and later on 64 bit platforms.
96021e87
JM
4998$!
4999$ d_getgrgid_r = "undef"
5000$ getgrgid_r_proto = "0"
5001$ d_getgrnam_r = "undef"
5002$ getgrnam_r_proto = "0"
5003$ d_getpgid = "undef"
5004$ d_getpgrp = "undef"
9fa802f3
CB
5005$! N.B. We already have home-grown thread-safe versions of
5006$! getpwnam and getpwuid -- no need to use CRTL versions
96021e87
JM
5007$ d_getpwnam_r = "undef"
5008$ getpwnam_r_proto = "0"
5009$ d_getpwuid_r = "undef"
5010$ getpwuid_r_proto = "0"
5011$ d_setgrent = "undef"
5012$ d_ttyname_r = "undef"
5013$ ttyname_r_proto = "0"
d00eb249
CB
5014$ d_snprintf = "undef"
5015$ d_vsnprintf = "undef"
5016$ if (vms_ver .GES. "7.3-2") .AND. (archname .NES. "VMS_VAX")
96021e87 5017$ then
d00eb249 5018$ echo "Found 64 bit OpenVMS ''vms_ver' -- will build with V7.3-2 routines"
96021e87
JM
5019$ d_getgrgid_r = "define"
5020$ getgrgid_r_proto = "1"
5021$ d_getgrnam_r = "define"
5022$ getgrnam_r_proto = "1"
5023$ if d_symlink .or. d_symlink .EQS. "define"
5024$ then
5025$! FIXME: Need to find how to activate this.
5026$! d_getpgid = "define"
5027$! d_getpgrp = "define"
5028$ endif
96021e87
JM
5029$ d_setgrent = "define"
5030$ d_ttyname_r = "define"
5031$ ttyname_r_proto = "1"
d00eb249
CB
5032$ d_snprintf = "define"
5033$ d_vsnprintf = "define"
96021e87
JM
5034$ endif
5035$!
5036$! VMS V7.3-2 powered options
5037$! We know that it is only available for V7.3-2 and later on 64 bit platforms.
5038$! Only implementing right now on 8.2 because that is what I am testing
5039$! These functions may require POSIX UIDs/GIDs to be active, so I am
5040$! not activating the features at this time, just preparing this file
5041$! to easily use them in the future.
5042$!
5043$ d_seteuid = "undef"
5044$ d_setpgid = "undef"
5045$ d_setpgrp = "undef"
5046$ d_setregid = "undef"
5047$ d_setreuid = "undef"
5048$ d_setsid = "undef"
d00eb249
CB
5049$ ! Disable this section for now.
5050$!$ if (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
5051$ if .NOT. 1
96021e87 5052$ then
d00eb249 5053$ echo "Found 64 bit OpenVMS ''vms_ver' -- will build with V7.3-2 UID setting routines"
96021e87
JM
5054$ d_seteuid = "define"
5055$ d_setpgid = "define"
5056$ d_setpgrp = "define"
5057$ d_setregid = "define"
5058$ d_setreuid = "define"
5059$ d_setsid = "define"
5060$ endif
5061$!
5062$! VMS V8 powered options
5063$! We know that it is only available for 8.2 and later on 64 bit platforms.
5064$!
5065$ d_fstatvfs = "undef"
5066$! d_statvfs = "undef"
5067$ i_sysstatvfs = "undef"
d00eb249 5068$ if (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
96021e87 5069$ then
d00eb249 5070$ echo "Found 64 bit OpenVMS ''vms_ver' -- will build with 8.2 routines"
96021e87
JM
5071$ d_fstatvfs = "define"
5072$! d_statvfs = "define"
5073$ i_sysstatvfs = "define"
5074$ endif
5075$!
570bb66e
JH
5076$! Check rand48 and its ilk
5077$!
5078$ echo4 "Looking for a random number function..."
5079$ OS
7558ebc2
PP
5080$ WS "#if defined(__DECC) || defined(__DECCXX)"
5081$ WS "#include <stdlib.h>"
5082$ WS "#endif"
5083$ WS "#include <stdio.h>"
5084$ WS "int main()"
570bb66e
JH
5085$ WS "{"
5086$ WS "srand48(12L);"
7558ebc2 5087$ WS "exit(0);"
570bb66e
JH
5088$ WS "}"
5089$ CS
5090$ GOSUB link_ok
5091$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
5092$ THEN
5093$ drand01 = "drand48()"
cd3eeb19
CB
5094$ randbits = "48"
5095$ randfunc = "drand48"
570bb66e
JH
5096$ randseedtype = "long int"
5097$ seedfunc = "srand48"
5098$ echo4 "Good, found drand48()."
5099$ d_drand48proto = "define"
5100$ ELSE
5101$ d_drand48proto = "undef"
5102$ drand01="random()"
cd3eeb19
CB
5103$ randbits = "31"
5104$ randfunc = "random"
570bb66e
JH
5105$ randseedtype = "unsigned"
5106$ seedfunc = "srandom"
5107$ OS
7558ebc2
PP
5108$ WS "#if defined(__DECC) || defined(__DECCXX)"
5109$ WS "#include <stdlib.h>"
5110$ WS "#endif"
5111$ WS "#include <stdio.h>"
5112$ WS "int main()"
570bb66e
JH
5113$ WS "{"
5114$ WS "srandom(12);"
7558ebc2 5115$ WS "exit(0);"
570bb66e
JH
5116$ WS "}"
5117$ CS
5118$ GOSUB link_ok
5119$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link
5120$ THEN
5121$ echo4 "OK, found random()."
5122$ ELSE
96e176bf 5123$ drand01="(((float)rand())*MY_INV_RAND_MAX)"
cd3eeb19 5124$ randfunc = "rand"
570bb66e
JH
5125$ randseedtype = "unsigned"
5126$ seedfunc = "srand"
5127$ echo4 "Yick, looks like I have to use rand()."
5128$ ENDIF
5129$ ENDIF
570bb66e
JH
5130$! Done with compiler checks. Clean up.
5131$ IF F$SEARCH("try.c") .NES."" THEN DELETE/NOLOG/NOCONFIRM try.c;*
5132$ IF F$SEARCH("try.obj").NES."" THEN DELETE/NOLOG/NOCONFIRM try.obj;*
5133$ IF F$SEARCH("try.exe").NES."" THEN DELETE/NOLOG/NOCONFIRM try.exe;*
5134$ IF F$SEARCH("try.opt").NES."" THEN DELETE/NOLOG/NOCONFIRM try.opt;*
5135$ IF F$SEARCH("try.out").NES."" THEN DELETE/NOLOG/NOCONFIRM try.out;*
414b89cc 5136$ IF ccname .EQS. "CXX"
570bb66e
JH
5137$ THEN
5138$ CALL Cxx_demangler_cleanup
5139$ ENDIF
5140$!
5141$! Some that are compiler or VMS version sensitive
5142$!
5143$! Gnu C stuff
414b89cc 5144$ IF ccname .EQS. "GCC"
570bb66e
JH
5145$ THEN
5146$ d_attribut="define"
5147$ vms_cc_type="gcc"
5148$ ELSE
5149$ vms_cc_type="cc"
5150$ d_attribut="undef"
5151$ ENDIF
5152$!
5153$! Dec C >= 5.2 and VMS ver >= 7.0
414b89cc
CB
5154$ IF (ccname .EQS. "DEC") .AND. -
5155 (F$INTEGER(Dec_C_Version).GE.50200000) .AND. (vms_ver .GES. "7.0")
570bb66e
JH
5156$ THEN
5157$ d_bcmp="define"
10eefe7f 5158$ d_getitimer="define"
570bb66e 5159$ d_gettimeod="define"
10eefe7f
CB
5160$ d_mmap="define"
5161$ d_mprotect="define"
5162$ d_munmap="define"
5163$ d_msync="define"
5164$ d_ualarm="define"
570bb66e 5165$ d_uname="define"
0ee1060b
CB
5166$! d_unsetenv="define" ! Fix me - Activating requires changing VMS code
5167$ d_unsetenv="undef" ! Change will be needed to allow GNV integration
5ff34fde 5168$ d_clearenv="undef"
10eefe7f
CB
5169$ d_usleep="define"
5170$ d_setitimer="define"
570bb66e 5171$ d_sigaction="define"
983dbef6 5172$ d_sigprocmask="define"
570bb66e
JH
5173$ d_truncate="define"
5174$ d_wait4="define"
5175$ d_index="define"
5176$ pidtype="pid_t"
fe1de8ce
CB
5177$ sig_name1="ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE"
5178$ sig_name2=" ALRM TERM USR1 USR2 NUM18 NUM19 CHLD CONT STOP TSTP TTIN TTOU DEBUG"
5179$ IF (vms_ver .GES. "7.3")
5180$ THEN
5181$ sig_name2 = sig_name2 + " NUM27 WINCH"
5182$ ENDIF
5183$!* signal.h defines SIGRTMIN as 33 and SIGRTMAX as 64, but there is no
5184$!* sigqueue function or other apparent means to do realtime signalling,
5185$!* so let's not try to include the realtime range for now.
5186$!* sig_name3=" NUM29 NUM30 NUM31 NUM32 RTMIN NUM34 NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43"
5187$!* sig_name4=" NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58"
5188$!* sig_name5=" NUM59 NUM60 NUM61 NUMT62 NUM63 RTMAX"
5189$ sig_name = sig_name1 + sig_name2
5190$ sig_num = ""
5191$ sig_num_init = ""
5192$ sig_name_init = ""
5193$ sig_index = 0
5194$!
5195$ PARSE_SIG_NAME_LOOP:
5196$!
5197$ tmp = F$ELEMENT(sig_index, " ", sig_name)
5198$ IF F$LENGTH(F$EDIT(tmp,"TRIM")) .eq. 0 THEN GOTO END_SIG_NAME_LOOP
5199$ sig_name_init = sig_name_init + """''tmp'"","
5200$ sig_num = sig_num + "''sig_index' "
5201$ sig_num_init = sig_num_init + "''sig_index',"
5202$ sig_index = sig_index + 1
5203$ GOTO PARSE_SIG_NAME_LOOP
5204$!
5205$ END_SIG_NAME_LOOP:
5206$!
5207$ sig_name_init = sig_name_init + "0"
5208$ sig_num_init = sig_num_init + "0"
5209$ sig_size = "''sig_index'"
5210$ sig_index = sig_index - 1
5211$ sig_count = "''sig_index'"
570bb66e
JH
5212$ uidtype="uid_t"
5213$ d_pathconf="define"
5214$ d_fpathconf="define"
5215$ d_sysconf="define"
5216$ d_sigsetjmp="define"
5217$ ELSE
5218$ pidtype="unsigned int"
570bb66e 5219$ d_bcmp="undef"
10eefe7f
CB
5220$ d_getitimer="undef"
5221$ d_gettimeod="undef"
5222$ d_mmap="undef"
5223$ d_mprotect="undef"
5224$ d_munmap="undef"
5225$ d_msync="undef"
5226$ d_ualarm="undef"
570bb66e 5227$ d_uname="undef"
0ee1060b 5228$ d_unsetenv="undef"
5ff34fde 5229$ d_clearenv="undef"
10eefe7f
CB
5230$ d_usleep="undef"
5231$ d_setitimer="undef"
570bb66e 5232$ d_sigaction="undef"
983dbef6 5233$ d_sigprocmask="undef"
570bb66e
JH
5234$ d_truncate="undef"
5235$ d_wait4="undef"
5236$ d_index="undef"
936f6df1 5237$ sig_name="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ABRT USR1 USR2"
570bb66e
JH
5238$ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT"",""FPE"",""KILL"",""BUS"",""SEGV"",""SYS"","
5239$ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",""USR1"",""USR2"",0"
5240$ sig_name_init = psnwc1 + psnwc2
936f6df1 5241$ sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17"
570bb66e 5242$ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,0"
6feaf546 5243$ sig_size="19"
acabf64b
JM
5244$ sig_count="15"
5245$ if (vms_ver .GES. "6.2") then sig_count="17"
570bb66e
JH
5246$ uidtype="unsigned int"
5247$ d_pathconf="undef"
5248$ d_fpathconf="undef"
5249$ d_sysconf="undef"
5250$ d_sigsetjmp="undef"
5251$ ENDIF
a3bd614a
PP
5252$!: see if tzname[] exists
5253$ OS
5254$ WS "#include <stdio.h>"
5255$ WS "#include <time.h>"
5256$ WS "int main() { extern short tzname[]; printf(""%hd"", tzname[0]); }"
5257$ CS
5258$ GOSUB compile_ok
5259$ IF compile_status .EQ. good_compile
5260$ THEN
5261$ d_tzname = "undef"
5262$ echo4 "tzname[] NOT found."
5263$ ELSE
5264$ d_tzname = "define"
5265$ echo4 "tzname[] found."
5266$ ENDIF
5267$ IF F$SEARCH("try.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM try.obj;
570bb66e 5268$!
414b89cc
CB
5269$ IF d_gethname .EQS. "undef" .AND. d_uname .EQS. "undef"
5270$ THEN
5271$ d_phostname="define"
5272$ ELSE
5273$ d_phostname="undef"
5274$ ENDIF
5275$!
570bb66e 5276$! Dec C alone
414b89cc 5277$ IF ccname .EQS. "DEC"
570bb66e
JH
5278$ THEN
5279$ d_mbstowcs="define"
5280$ d_mbtowc="define"
5281$ d_stdiobase="define"
5282$ d_stdio_cnt_lval="define"
dedcc4d4 5283$ d_stdio_ptr_lval="define"
570bb66e 5284$ d_stdstdio="define"
1de32f2a 5285$ d_faststdio="define"
570bb66e
JH
5286$ d_wcstombs="define"
5287$ d_mblen="define"
5288$ d_mktime="define"
5289$ d_strcoll="define"
5290$ d_strxfrm="define"
5291$ d_wctomb="define"
5292$ i_locale="define"
2765b840 5293$ i_langinfo="define"
570bb66e 5294$ d_locconv="define"
baf3cf9c
CB
5295$ IF vms_ver .GES. "6.2"
5296$ THEN
5297$ d_nl_langinfo="define"
5298$ ELSE
5299$ d_nl_langinfo="undef"
5300$ ENDIF
570bb66e
JH
5301$ d_setlocale="define"
5302$ vms_cc_type="decc"
5303$ ELSE
5304$ d_mbstowcs="undef"
5305$ d_mbtowc="undef"
5306$ d_stdiobase="undef"
5307$ d_stdio_cnt_lval="undef"
5308$ d_stdio_ptr_lval="undef"
5309$ d_stdstdio="undef"
1de32f2a 5310$ d_faststdio="undef"
570bb66e
JH
5311$ d_wcstombs="undef"
5312$ d_mblen="undef"
5313$ d_mktime="undef"
5314$ d_strcoll="undef"
5315$ d_strxfrm="undef"
5316$ d_wctomb="undef"
5317$ i_locale="undef"
2765b840 5318$ i_langinfo="undef"
570bb66e 5319$ d_locconv="undef"
2765b840 5320$ d_nl_langinfo="undef"
570bb66e
JH
5321$ d_setlocale="undef"
5322$ ENDIF
a7ffa9b9 5323$ d_stdio_ptr_lval_sets_cnt="undef"
a15cef0c 5324$ d_stdio_ptr_lval_nochange_cnt="define"
1de32f2a 5325$ usefaststdio="undef"
570bb66e
JH
5326$!
5327$! Sockets?
5328$ if Has_Socketshr .OR. Has_Dec_C_Sockets
5329$ THEN
5330$ d_vms_do_sockets="define"
5331$ d_htonl="define"
5332$ d_socket="define"
96021e87 5333$ d_sockpair = "undef"
d00eb249 5334$ if (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
96021e87
JM
5335$ then
5336$ echo "Found 64 bit OpenVMS 8.2, will build with socketpair support"
5337$ d_sockpair = "define"
5338$ endif
570bb66e
JH
5339$ d_select="define"
5340$ netdb_hlen_type="int"
5341$ netdb_host_type="char *"
5342$ netdb_name_type="char *"
5343$ netdb_net_type="long"
5344$ d_gethbyaddr="define"
5345$ d_gethbyname="define"
5346$ d_getnbyaddr="define"
5347$ d_getnbyname="define"
5348$ d_getpbynumber="define"
5349$ d_getpbyname="define"
5350$ d_getsbyport="define"
5351$ d_getsbyname="define"
5352$ d_gethostprotos="define"
5353$ d_getnetprotos="define"
5354$ d_getprotoprotos="define"
5355$ d_getservprotos="define"
414b89cc 5356$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
570bb66e
JH
5357$ THEN
5358$ socksizetype="unsigned int"
5359$ ELSE
5360$ socksizetype="int *"
5361$ ENDIF
5362$ ELSE
5363$ d_vms_do_sockets="undef"
5364$ d_htonl="undef"
5365$ d_socket="undef"
96021e87 5366$ d_socketpair = "undef"
570bb66e
JH
5367$ d_select="undef"
5368$ netdb_hlen_type="int"
5369$ netdb_host_type="char *"
5370$ netdb_name_type="char *"
5371$ netdb_net_type="long"
5372$ d_gethbyaddr="undef"
5373$ d_gethbyname="undef"
5374$ d_getnbyaddr="undef"
5375$ d_getnbyname="undef"
5376$ d_getpbynumber="undef"
5377$ d_getpbyname="undef"
5378$ d_getsbyport="undef"
5379$ d_getsbyname="undef"
5380$ d_gethostprotos="undef"
5381$ d_getnetprotos="undef"
5382$ d_getprotoprotos="undef"
5383$ d_getservprotos="undef"
5384$ socksizetype="undef"
5385$ ENDIF
5386$! Threads
5387$ IF use_threads
5388$ THEN
5389$ usethreads="define"
5390$ d_pthreads_created_joinable="define"
5391$ if (vms_ver .GES. "7.0")
5392$ THEN
5393$ d_oldpthreads="undef"
5394$ ELSE
5395$ d_oldpthreads="define"
5396$ ENDIF
5397$ ELSE
5398$ d_oldpthreads="undef"
5399$ usethreads="undef"
5400$ d_pthreads_created_joinable="undef"
5401$ ENDIF
5402$!
5403$! new (5.005_62++) typedefs for primitives
5404$!
5405$ echo "Choosing the C types to be used for Perl's internal types..."
5406$ ivtype="long"
5407$ uvtype="unsigned long"
5408$ i8type="char"
5409$ u8type="unsigned char"
5410$ i16type="short"
5411$ u16type="unsigned short"
5412$ i32type="int"
5413$ u32type="unsigned int"
5414$ i64type="long long"
5415$ u64type="unsigned long long"
5416$ nvtype="double"
5417$!
5418$ IF use64bitint .OR. use64bitint .EQS. "define"
5419$ THEN
5420$ ivtype = "''i64type'"
5421$ uvtype = "''u64type'"
570bb66e
JH
5422$ ELSE
5423$ i64size="undef"
5424$ u64size="undef"
5425$ ENDIF
5426$!
50ddda1d
CB
5427$ IF uselongdouble .OR. uselongdouble .EQS. "define"
5428$ THEN
5429$ nvtype="long double"
5430$ ENDIF
5431$!
570bb66e
JH
5432$ tmp = "''ivtype'"
5433$ GOSUB type_size_check
5434$ ivsize = tmp
5435$ IF use64bitint .OR. use64bitint .EQS. "define" THEN i64size = tmp
5436$ IF ivtype .eqs. "long"
5437$ THEN longsize = tmp
5438$ ELSE
5439$ tmp = "long"
5440$ GOSUB type_size_check
5441$ longsize = tmp
5442$ ENDIF
7558ebc2 5443$!
570bb66e
JH
5444$ tmp = "''uvtype'"
5445$ GOSUB type_size_check
5446$ uvsize = tmp
5447$ IF use64bitint .OR. use64bitint .EQS. "define" THEN u64size = tmp
7558ebc2 5448$!
570bb66e
JH
5449$ tmp = "''i8type'"
5450$ GOSUB type_size_check
5451$ i8size = tmp
7558ebc2 5452$!
570bb66e
JH
5453$ tmp = "''u8type'"
5454$ GOSUB type_size_check
5455$ u8size = tmp
7558ebc2 5456$!
570bb66e
JH
5457$ tmp = "''i16type'"
5458$ GOSUB type_size_check
5459$ i16size = tmp
5460$ IF i16type .eqs. "short"
5461$ THEN shortsize = tmp
5462$ ELSE
5463$ tmp = "short"
5464$ gosub type_size_check
5465$ shortsize = tmp
5466$ ENDIF
7558ebc2 5467$!
570bb66e
JH
5468$ tmp = "''u16type'"
5469$ GOSUB type_size_check
5470$ u16size = tmp
7558ebc2 5471$!
570bb66e
JH
5472$ tmp = "''i32type'"
5473$ GOSUB type_size_check
5474$ i32size = tmp
5475$ IF i32type .eqs. "int"
5476$ THEN intsize = tmp
5477$ ELSE
5478$ tmp = "int"
5479$ gosub type_size_check
5480$ intsize = tmp
5481$ ENDIF
7558ebc2 5482$!
570bb66e
JH
5483$ tmp = "''u32type'"
5484$ gosub type_size_check
5485$ u32size = tmp
7558ebc2 5486$!
570bb66e
JH
5487$ tmp = "''nvtype'"
5488$ GOSUB type_size_check
5489$ nvsize = tmp
5490$!
5491$ echo "(IV will be ""''ivtype'"", ''ivsize' bytes)"
5492$ echo "(UV will be ""''uvtype'"", ''uvsize' bytes)"
5493$ echo "(NV will be ""''nvtype'"", ''nvsize' bytes)"
5494$!
a5bd55ee
CB
5495$ d_nv_preserves_uv = "undef"
5496$ echo4 "Checking how many bits of your UVs your NVs can preserve..."
570bb66e 5497$ OS
7558ebc2
PP
5498$ WS "#if defined(__DECC) || defined(__DECCXX)"
5499$ WS "#include <stdlib.h>"
5500$ WS "#endif"
5501$ WS "#include <stdio.h>"
5502$ WS "int main() {"
a5bd55ee
CB
5503$ WS " ''uvtype' u = 0;"
5504$ WS " int n = 8 * ''uvsize';"
5505$ WS " int i;"
5506$ WS " for (i = 0; i < n; i++) {"
5507$ WS " u = u << 1 | (''uvtype')1;"
5508$ WS " if ((''uvtype')(''nvtype')u != u)"
5509$ WS " break;"
5510$ WS " }"
5511$ WS " printf(""%d\n"", i);"
7558ebc2
PP
5512$ WS " exit(0);"
5513$ WS "}"
570bb66e
JH
5514$ CS
5515$ GOSUB compile
a5bd55ee
CB
5516$ nv_preserves_uv_bits = tmp
5517$ IF F$INTEGER(nv_preserves_uv_bits) .GE. (F$INTEGER(uvsize) * 8)
5518$ THEN
570bb66e 5519$ d_nv_preserves_uv = "define"
a5bd55ee 5520$ echo "Your NVs can preserve all ''nv_preserves_uv_bits' bits of your UVs."
570bb66e 5521$ ELSE
a5bd55ee
CB
5522$ d_nv_preserves_uv = "undef""
5523$ echo "Your NVs can preserve only ''nv_preserves_uv_bits' bits of your UVs."
570bb66e 5524$ ENDIF
f2610a60 5525$!
1e74786a
CB
5526$ nv_overflows_integers_at = "0"
5527$ echo4 "Checking to find the largest integer value your NVs can hold..."
5528$ OS
5529$ WS "#include <stdio.h>"
5530$ WS ""
5531$ WS "typedef ''nvtype' NV;"
5532$ WS ""
5533$ WS "int"
5534$ WS "main() {"
5535$ WS " NV value = 2;"
5536$ WS " int count = 1;"
5537$ WS ""
5538$ WS " while(count < 256) {"
5539$ WS " volatile NV up = value + 1.0;"
5540$ WS " volatile NV negated = -value;"
5541$ WS " volatile NV down = negated - 1.0;"
5542$ WS " volatile NV got_up = up - value;"
5543$ WS " int up_good = got_up == 1.0;"
5544$ WS " int got_down = down - negated;"
5545$ WS " int down_good = got_down == -1.0;"
5546$ WS ""
5547$ WS " if (down_good != up_good) {"
5548$ WS " fprintf(stderr,"
5549$ WS " ""Inconsistency - up %d %f; down %d %f; for 2**%d (%.20f)\n"","
5550$ WS " up_good, (double) got_up, down_good, (double) got_down,"
5551$ WS " count, (double) value);"
5552$ WS " return 1;"
5553$ WS " }"
5554$ WS " if (!up_good) {"
5555$ WS " while (1) {"
5556$ WS " if (count > 8) {"
5557$ WS " count -= 8;"
5558$ WS " fputs(""256.0"", stdout);"
5559$ WS " } else {"
5560$ WS " count--;"
5561$ WS " fputs(""2.0"", stdout);"
5562$ WS " }"
5563$ WS " if (!count) {"
5564$ WS " puts("""");"
5565$ WS " return 0;"
5566$ WS " }"
5567$ WS " fputs(""*"", stdout);"
5568$ WS " }"
5569$ WS " }"
5570$ WS " value *= 2;"
5571$ WS " ++count;"
5572$ WS " }"
5573$ WS " fprintf(stderr, ""Cannot overflow integer range, even at 2**%d (%.20f)\n"","
5574$ WS " count, (double) value);"
5575$ WS " return 1;"
5576$ WS "}"
5577$ CS
5578$ GOSUB compile
5579$ IF F$LENGTH(tmp) .GT. 0
5580$ THEN
5581$ IF F$EXTRACT(0,1,tmp) .EQS. "2"
5582$ THEN
5583$ echo "The largest integer your NVs can preserve is equal to ''tmp'"
5584$ nv_overflows_integers_at = tmp
5585$ ELSE
5586$ echo "Cannot determine the largest integer value your NVs can hold, unexpected output"
5587$ echo "''tmp'"
5588$ ENDIF
5589$ ELSE
5590$ echo "Cannot determine the largest integer value your NVs can hold"
5591$ ENDIF
5592$!
50ddda1d
CB
5593$! Check for signbit (must already know nvtype)
5594$!
5595$ echo4 "Checking to see if you have signbit() available to work on ''nvtype'..."
5596$ OS
5597$ WS "#if defined(__DECC) || defined(__DECCXX)"
5598$ WS "#include <stdlib.h>"
5599$ WS "#endif"
5600$ WS "#include <fp.h>"
5601$ WS "#include <stdio.h>"
5602$ WS "int main()"
5603$ WS "{"
5604$ WS " ''nvtype' x = 0.0;"
5605$ WS " ''nvtype' y = -0.0;"
5606$ WS " if ((signbit(x) == 0) && (signbit(y) != 0))"
5607$ WS " printf(""1\n"");"
5608$ WS " else"
5609$ WS " printf(""0\n"");"
5610$ WS "}"
5611$ CS
5612$ GOSUB compile
5613$ IF tmp .EQS. "1"
5614$ THEN
5615$ d_signbit = "define"
5616$ echo4 "Yes."
5617$ ELSE
5618$ d_signbit = "undef"
5619$ echo4 "Nope."
5620$ ENDIF
5621$!
05c058bc 5622$ echo4 "Checking if kill() uses SYS$FORCEX or can't be called from a signal handler..."
f2610a60
CL
5623$ kill_by_sigprc = "undef"
5624$ OS
5625$ WS "#include <stdio.h>"
5626$ WS "#include <signal.h>"
37a3cbe4 5627$ WS "#include <unistd.h>"
05c058bc
CB
5628$ WS "void handler1(int s) { printf(""%d"",s); kill(getpid(),2); }"
5629$ WS "void handler2(int s) { printf(""%d"",s); }"
f2610a60
CL
5630$ WS "main(){"
5631$ WS " printf(""0"");"
05c058bc
CB
5632$ WS " signal(1,handler1);"
5633$ WS " signal(2,handler2);"
5634$ WS " kill(getpid(),1);"
5635$ WS " sleep(1);"
5636$ WS " printf(""\n"");"
f2610a60
CL
5637$ WS "}"
5638$ CS
5639$ ON ERROR THEN CONTINUE
5640$ GOSUB compile
05c058bc 5641$ IF tmp .NES. "012"
f2610a60 5642$ THEN
05c058bc
CB
5643$ echo4 "Yes, it has at least one of those limitations."
5644$ echo4 "Checking whether we can use SYS$SIGPRC instead..."
f2610a60
CL
5645$ OS
5646$ WS "#include <stdio.h>"
5647$ WS "#include <lib$routines.h>"
5648$ WS "unsigned long code = 0;"
5649$ WS "int handler(unsigned long *args) {"
5650$ WS " code = args[1];"
5651$ WS " return 1;"
5652$ WS "}"
5653$ WS "main() { "
5654$ WS " int iss, sys$sigprc();"
5655$ WS " lib$establish(handler);"
5656$ WS " iss = sys$sigprc(0,0,0x1234);"
5657$ WS " iss = ((iss&1)==1 && code == 0x1234);"
5658$ WS " printf(""%d\n"",iss);"
5659$ WS "}"
5660$ CS
dfc1d888
CB
5661$ ON ERROR THEN CONTINUE
5662$ GOSUB compile
f2610a60
CL
5663$ IF tmp .EQS. "1"
5664$ THEN
5cda9808 5665$ echo4 "Yep, we can."
f2610a60
CL
5666$ kill_by_sigprc = "define"
5667$!
fe1de8ce
CB
5668$! Use the same list of signals the CRTL does for recent systems, but cook our own for very old systems.
5669$! Note that the list controls what signals can be caught by name as well as what can be raised via kill().
f2610a60 5670$!
db7bf729 5671$ if vms_ver .LTS. "6.2"
fe1de8ce
CB
5672$ then
5673$! since SIGBUS and SIGSEGV indistinguishable, make them the same here.
936f6df1 5674$ sig_name="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ABRT"
f2610a60
CL
5675$ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT"",""FPE"",""KILL"",""BUS"",""SEGV"",""SYS"","
5676$ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",0"
5677$ sig_name_init = psnwc1 + psnwc2
936f6df1
CB
5678$ sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6"
5679$ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,0"
f2610a60 5680$ sig_size="17"
acabf64b 5681$ sig_count="15"
f2610a60 5682$ endif
5cda9808
CB
5683$ ELSE
5684$ echo4 "Nope, we can't."
f2610a60 5685$ ENDIF
5cda9808
CB
5686$ ELSE
5687$ echo4 "Nope, it doesn't."
f2610a60 5688$ ENDIF
570bb66e
JH
5689$ DELETE/SYMBOL tmp
5690$!
570bb66e
JH
5691$! Finally the composite ones. All config
5692$!
5693$ myuname="''osname' ''myname' ''osvers' ''F$EDIT(hwname, "TRIM")'"
5694$!
414b89cc 5695$ IF ccname .EQS. "DEC"
570bb66e 5696$ THEN
a71134cc 5697$ ccflags="/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=''obj_ext' ''ccflags'"
570bb66e 5698$ ENDIF
7558ebc2 5699$ i_dirent = "undef"
414b89cc 5700$ IF ccname .EQS. "CXX"
7558ebc2
PP
5701$ THEN
5702$ i_dirent = "define"
a71134cc 5703$ ccflags="/Include=[]/Standard=ANSI/Prefix=All/Obj=''obj_ext' ''ccflags'"
7558ebc2 5704$ ENDIF
570bb66e
JH
5705$ IF use_vmsdebug_perl
5706$ THEN
a71134cc 5707$ optimize="/List/Debug/NoOpt"
31963e90 5708$ ldflags="/Debug/Trace/Map"
570bb66e
JH
5709$ dbgprefix = "DBG"
5710$ ELSE
a71134cc 5711$ optimize= "/NoList"
31963e90 5712$ ldflags="/NoTrace/NoMap"
570bb66e
JH
5713$ dbgprefix = ""
5714$ ENDIF
5715$!
5716$! Okay, we've got everything configured. Now go write out a config.sh.
5717$ basename_config_sh = F$PARSE(config_sh,,,"NAME",)+F$PARSE(config_sh,,,"TYPE",)
5718$ echo4 "Creating ''basename_config_sh'..."
7558ebc2 5719$ open/write CONFIG 'config_sh'
570bb66e
JH
5720$ WC := write CONFIG
5721$!
5722$! ##BEGIN WRITE NEW CONSTANTS HERE##
5723$!
5724$ WC "#!/bin/sh"
5725$ WC "#"
5726$ WC "# This file was produced by Configure.COM on a ''osname' system."
5727$ WC "#"
5728$ WC "# Package name : ''package'"
5729$ WC "# Source directory : ''src'"
5730$ WC "# Configuration time: " + cf_time
5731$ WC "# Configuration by : " + cf_by
5732$ WC "# Target system : " + myuname
5733$ WC ""
570bb66e
JH
5734$ WC "Makefile_SH='" + Makefile_SH + "'"
5735$ WC "Mcc='" + Mcc + "'"
414b89cc
CB
5736$ WC "PERL_REVISION='" + revision + "'"
5737$ WC "PERL_VERSION='" + patchlevel + "'"
5738$ WC "PERL_SUBVERSION='" + subversion + "'"
30629e9c 5739$ WC "PERL_API_REVISION='" + api_revision + "'"
414b89cc
CB
5740$ WC "PERL_API_VERSION='" + api_version + "'"
5741$ WC "PERL_API_SUBVERSION='" + api_subversion + "'"
c4ac6101 5742$ WC "PERL_PATCHLEVEL='" + perl_patchlevel + "'"
14c175ff 5743$ WC "perl_patchlevel='" + perl_patchlevel + "'"
8c541774 5744$ WC "PERL_CONFIG_SH='true'"
002721d5 5745$ WC "_a='" + lib_ext + "'"
45e8d1dd 5746$ WC "_exe='" + exe_ext + "'"
002721d5 5747$ WC "_o='" + obj_ext + "'"
570bb66e 5748$ WC "alignbytes='" + alignbytes + "'"
414b89cc 5749$ WC "aphostname='write sys$output f$edit(f$getsyi(\""SCSNODE\""),\""TRIM,LOWERCASE\"")'"
570bb66e
JH
5750$ WC "ar='" + "'"
5751$ WC "archlib='" + archlib + "'"
5752$ WC "archlibexp='" + archlibexp + "'"
5753$ WC "archname='" + archname + "'"
5754$ WC "baserev='" + baserev + "'"
5755$ WC "bin='" + bin + "'"
5756$ WC "binexp='" + binexp + "'"
5757$ WC "builddir='" + builddir + "'"
5758$ WC "byteorder='1234'"
5759$ WC "castflags='0'"
5760$ WC "cc='" + perl_cc + "'"
5761$ WC "cccdlflags='" + cccdlflags + "'"
5762$ WC "ccdlflags='" + ccdlflags + "'"
e0261ef8
CB
5763$ IF uselargefiles .OR. uselargefiles .EQS. "define"
5764$ THEN
cfcfe586
JM
5765$ IF usestdstat .OR. usestdstat .EQS. "define"
5766$ THEN
5767$ ccdefines = "_USE_STD_STAT=1"
5768$ ELSE
96021e87 5769$ ccdefines = "_LARGEFILE=1"
cfcfe586 5770$ ENDIF
cc57629d
CB
5771$ ELSE
5772$ ccdefines = ""
96021e87
JM
5773$ ENDIF
5774$ IF ccdefines .NES. ""
5775$ THEN
5776$ WC "ccflags='" + ccflags + "/Define=" + ccdefines + "'"
e0261ef8
CB
5777$ ELSE
5778$ WC "ccflags='" + ccflags + "'"
5779$ ENDIF
5780$ WC "ccflags_uselargefiles='" + "'"
414b89cc 5781$ WC "ccname='" + ccname + "'"
7558ebc2 5782$ WC "ccversion='" + ccversion + "'"
570bb66e
JH
5783$ WC "cf_by='" + cf_by + "'"
5784$ WC "cf_email='" + cf_email + "'"
5785$ WC "cf_time='" + cf_time + "'"
5786$ WC "config_args='" + config_args + "'"
5787$ WC "config_sh='" + config_sh + "'"
5788$ WC "cpp_stuff='" + cpp_stuff + "'"
5789$ WC "cpplast='" + cpplast + "'"
5790$ WC "cppminus='" + cppminus + "'"
5791$ WC "cpprun='" + cpprun + "'"
5792$ WC "cppstdin='" + cppstdin + "'"
79f41ce5
CB
5793$ IF use64bitint .OR. use64bitint .EQS. "define"
5794$ THEN
5795$! gcvt() does not work for > 16 decimal places; fallback to sprintf
5796$ WC "d_Gconvert='sprintf((b),""%.*" + (nvgformat-"""") + ",(n),(x))'"
5797$ ELSE
9fd42072 5798$ WC "d_Gconvert='my_gconvert(x,n,t,b)'"
79f41ce5 5799$ ENDIF
6b356c8e
JH
5800$ WC "d_PRIEldbl='" + d_PRIEUldbl + "'"
5801$ WC "d_PRIFldbl='" + d_PRIFUldbl + "'"
5802$ WC "d_PRIGldbl='" + d_PRIGUldbl + "'"
842bcadf 5803$ WC "d_PRIXU64='" + d_PRIXU64 + "'"
2ef53570 5804$ WC "d_PRId64='" + d_PRId64 + "'"
59a27e12 5805$ WC "d_PRIeldbl='" + d_PRIeldbl + "'"
570bb66e
JH
5806$ WC "d_PRIfldbl='" + d_PRIfldbl + "'"
5807$ WC "d_PRIgldbl='" + d_PRIgldbl + "'"
5808$ WC "d_PRIo64='" + d_PRIo64 + "'"
5809$ WC "d_PRIu64='" + d_PRIu64 + "'"
5810$ WC "d_PRIx64='" + d_PRIx64 + "'"
b5ddfb46 5811$ WC "d_SCNfldbl='" + d_SCNfldbl + "'"
2ef53570 5812$ WC "d__fwalk='undef'"
570bb66e
JH
5813$ WC "d_access='" + d_access + "'"
5814$ WC "d_accessx='undef'"
e10940c3 5815$ WC "d_aintl='undef'"
570bb66e
JH
5816$ WC "d_alarm='define'"
5817$ WC "d_archlib='define'"
96938616 5818$ WC "d_asctime64='undef'"
570bb66e
JH
5819$ WC "d_atolf='" + d_atolf + "'"
5820$ WC "d_atoll='" + d_atoll + "'"
0dbb1585
AL
5821$ WC "d_attribute_format='" + d_attribut + "'"
5822$ WC "d_attribute_malloc='undef'"
5823$ WC "d_attribute_nonnull='undef'"
5824$ WC "d_attribute_noreturn='undef'"
5825$ WC "d_attribute_pure='undef'"
5826$ WC "d_attribute_unused='undef'"
5827$ WC "d_attribute_warn_unused_result='undef'"
36f1aec4 5828$ WC "d_printf_format_null='undef'"
570bb66e
JH
5829$ WC "d_bcmp='" + d_bcmp + "'"
5830$ WC "d_bcopy='" + d_bcopy + "'"
5831$ WC "d_bincompat3='undef'"
570bb66e 5832$! WC "d_bsdpgrp='undef'"
2ef53570 5833$ WC "d_bsdgetpgrp='undef'"
570bb66e 5834$ WC "d_bsdsetpgrp='undef'"
e8e09534
PP
5835$ WC "d_builtin_choose_expr='undef'" ! GCC only
5836$ WC "d_builtin_expect='undef'" ! GCC only
570bb66e
JH
5837$ WC "d_bzero='" + d_bzero + "'"
5838$ WC "d_casti32='define'"
5839$ WC "d_castneg='define'"
5840$ WC "d_charvspr='undef'"
5841$ WC "d_chown='define'"
5842$ WC "d_chroot='undef'"
5843$ WC "d_chsize='undef'"
758a5d79 5844$ WC "d_class='undef'"
570bb66e
JH
5845$ WC "d_cmsghdr_s='undef'"
5846$ WC "d_const='define'"
e10940c3 5847$ WC "d_copysignl='define'"
60f153db 5848$ WC "d_cplusplus='" + d_cplusplus + "'"
570bb66e
JH
5849$ WC "d_crypt='define'"
5850$ WC "d_csh='undef'"
0b57cc8d 5851$ WC "d_ctermid='define'"
96938616 5852$ WC "d_ctime64='undef'"
570bb66e 5853$ WC "d_cuserid='define'"
9802685f 5854$ WC "d_c99_variadic_macros='undef'"
570bb66e 5855$ WC "d_dbl_dig='define'"
2ef53570 5856$ WC "d_dbminitproto='undef'"
570bb66e 5857$ WC "d_difftime='define'"
96938616 5858$ WC "d_difftime64='undef'"
de52168c 5859$ WC "d_dir_dd_fd='undef'"
a838cfe5 5860$ WC "d_dirfd='undef'"
ddcbaa1c 5861$ WC "d_dirnamlen='define'"
570bb66e
JH
5862$ WC "d_dlerror='undef'"
5863$ WC "d_dlsymun='undef'"
5864$ WC "d_dosuid='undef'"
5865$ WC "d_drand48proto='" + d_drand48proto + "'"
5866$ WC "d_dup2='define'"
5867$ WC "d_eaccess='undef'"
5868$ WC "d_endgrent='define'"
5869$ WC "d_endhent='" + d_endhent + "'"
5870$ WC "d_endnent='" + d_endnent + "'"
5871$ WC "d_endpent='" + d_endpent + "'"
5872$ WC "d_endpwent='define'"
5873$ WC "d_endsent='" + d_endsent + "'"
5874$ WC "d_eofnblk='undef'"
5875$ WC "d_eunice='undef'"
5876$ WC "d_fchmod='undef'"
b363b713 5877$ WC "d_fchdir='undef'"
570bb66e
JH
5878$ WC "d_fchown='undef'"
5879$ WC "d_fcntl='" + d_fcntl + "'"
1c21a19a 5880$ WC "d_fcntl_can_lock='" + d_fcntl_can_lock + "'"
570bb66e
JH
5881$ WC "d_fd_set='" + d_fd_set + "'"
5882$ WC "d_fgetpos='define'"
758a5d79
JH
5883$ WC "d_finite='undef'"
5884$ WC "d_finitel='undef'"
570bb66e
JH
5885$ WC "d_flexfnam='define'"
5886$ WC "d_flock='undef'"
2ef53570 5887$ WC "d_flockproto='undef'"
570bb66e 5888$ WC "d_fork='undef'"
758a5d79 5889$ WC "d_fp_class='undef'"
570bb66e 5890$ WC "d_fpathconf='" + d_fpathconf + "'"
758a5d79
JH
5891$ WC "d_fpclass='undef'"
5892$ WC "d_fpclassify='undef'"
5893$ WC "d_fpclassl='undef'"
570bb66e
JH
5894$ WC "d_fpos64_t='" + d_fpos64_t + "'"
5895$ WC "d_frexpl='" + d_frexpl + "'"
5896$ WC "d_fs_data_s='undef'"
e0261ef8 5897$ WC "d_fseeko='" + d_fseeko + "'"
570bb66e
JH
5898$ WC "d_fsetpos='define'"
5899$ WC "d_fstatfs='undef'"
96021e87 5900$ WC "d_fstatvfs='" + d_fstatvfs + "'"
411ab01c 5901$ WC "d_fsync='undef'"
e0261ef8 5902$ WC "d_ftello='" + d_ftello + "'"
eca5cfc5 5903$ WC "d_futimes='undef'"
fea629d8 5904$ WC "d_getcwd='define'"
570bb66e
JH
5905$ WC "d_getespwnam='undef'"
5906$ WC "d_getfsstat='undef'"
5907$ WC "d_getgrent='define'"
5908$ WC "d_getgrps='undef'"
5909$ WC "d_gethbyaddr='" + d_gethbyaddr + "'"
5910$ WC "d_gethbyname='" + d_gethbyname + "'"
5911$ WC "d_gethent='" + d_gethent + "'"
5912$ WC "d_gethname='" + d_gethname + "'"
5913$ WC "d_gethostprotos='" + d_gethostprotos + "'"
10eefe7f 5914$ WC "d_getitimer='" + d_getitimer + "'"
570bb66e
JH
5915$ WC "d_getlogin='define'"
5916$ WC "d_getmnt='undef'"
5917$ WC "d_getmntent='undef'"
5918$ WC "d_getnbyaddr='" + d_getnbyaddr + "'"
5919$ WC "d_getnbyname='" + d_getnbyname + "'"
5920$ WC "d_getnent='" + d_getnent + "'"
5921$ WC "d_getnetprotos='" + d_getnetprotos + "'"
0c0643d0 5922$ WC "d_getpagsz='undef'"
570bb66e
JH
5923$ WC "d_getpbyname='" + d_getpbyname + "'"
5924$ WC "d_getpbynumber='" + d_getpbynumber + "'"
5925$ WC "d_getpent='" + d_getpent + "'"
96021e87 5926$ WC "d_getpgid='" + d_getpgid + "'"
570bb66e 5927$ WC "d_getpgrp2='undef'"
96021e87 5928$ WC "d_getpgrp='" + d_getpgrp + "'"
41cbbefa 5929$ WC "d_getppid='" + d_getppid + "'"
570bb66e
JH
5930$ WC "d_getprior='undef'"
5931$ WC "d_getprotoprotos='" + d_getprotoprotos + "'"
5932$ WC "d_getprpwnam='undef'"
5933$ WC "d_getpwent='define'"
5934$ WC "d_getsbyname='" + d_getsbyname + "'"
5935$ WC "d_getsbyport='" + d_getsbyport + "'"
5936$ WC "d_getsent='" + d_getsent + "'"
5937$ WC "d_getservprotos='" + d_getservprotos + "'"
5938$ WC "d_getspnam='undef'"
5939$ WC "d_gettimeod='" + d_gettimeod + "'"
96938616 5940$ WC "d_gmtime64='undef'"
570bb66e
JH
5941$ WC "d_gnulibc='undef'"
5942$ WC "d_grpasswd='undef'"
5943$ WC "d_hasmntopt='undef'"
5944$ WC "d_htonl='" + d_htonl + "'"
e10940c3 5945$ WC "d_ilogbl='undef'"
a04d9d89 5946$ WC "d_inc_version_list='undef'"
570bb66e
JH
5947$ WC "d_index='" + d_index + "'"
5948$ WC "d_inetaton='undef'"
5949$ WC "d_int64_t='" + d_int64_t + "'"
5950$ WC "d_isascii='define'"
758a5d79
JH
5951$ WC "d_isfinite='undef'"
5952$ WC "d_isinf='undef'"
3a491987 5953$ WC "d_isnan='" + d_isnan + "'"
570bb66e
JH
5954$ WC "d_isnanl='" + d_isnanl + "'"
5955$ WC "d_killpg='undef'"
96021e87 5956$ WC "d_lchown='" + d_lchown + "'"
570bb66e 5957$ WC "d_ldbl_dig='define'"
5b55c156 5958$ WC "d_libm_lib_version='undef'"
96021e87 5959$ WC "d_link='" + d_link + "'"
570bb66e 5960$ WC "d_llseek='undef'"
96938616 5961$ WC "d_localtime64='undef'"
570bb66e
JH
5962$ WC "d_locconv='" + d_locconv + "'"
5963$ WC "d_lockf='undef'"
5964$ WC "d_longdbl='" + d_longdbl + "'"
5965$ WC "d_longlong='" + d_longlong + "'"
5966$ WC "d_lseekproto='define'"
96021e87 5967$ WC "d_lstat='" + d_lstat + "'"
570bb66e 5968$ WC "d_madvise='undef'"
2b339242
JM
5969$ WC "d_malloc_size='undef'"
5970$ WC "d_malloc_good_size='undef'"
570bb66e
JH
5971$ WC "d_mblen='" + d_mblen + "'"
5972$ WC "d_mbstowcs='" + d_mbstowcs + "'"
5973$ WC "d_mbtowc='" + d_mbtowc + "'"
5974$ WC "d_memchr='" + d_memchr + "'"
5975$ WC "d_memcmp='define'"
5976$ WC "d_memcpy='define'"
5977$ WC "d_memmove='define'"
5978$ WC "d_memset='define'"
5979$ WC "d_mkdir='define'"
5980$ WC "d_mkdtemp='" + d_mkdtemp + "'"
5981$ WC "d_mkfifo='undef'"
5982$ WC "d_mknod='undef'"
5983$ WC "d_mkstemp='" + d_mkstemp + "'"
5984$ WC "d_mkstemps='" + d_mkstemps + "'"
5985$ WC "d_mktime='" + d_mktime + "'"
96938616 5986$ WC "d_mktime64='undef'"
10eefe7f 5987$ WC "d_mmap='" + d_mmap + "'"
570bb66e 5988$ WC "d_modfl='" + d_modfl + "'"
8725ccc4 5989$ WC "d_modflproto='" + d_modflproto + "'"
7b826da8 5990$ WC "d_modfl_pow32_bug='undef'"
10eefe7f 5991$ WC "d_mprotect='" + d_mprotect + "'"
570bb66e
JH
5992$ WC "d_msg='undef'"
5993$ WC "d_msg_ctrunc='undef'"
5994$ WC "d_msg_dontroute='undef'"
5995$ WC "d_msg_oob='undef'"
5996$ WC "d_msg_peek='undef'"
5997$ WC "d_msg_proxy='undef'"
5998$ WC "d_msghdr_s='undef'"
10eefe7f
CB
5999$ WC "d_msync='" + d_msync + "'"
6000$ WC "d_munmap='" + d_munmap + "'"
570bb66e 6001$ WC "d_mymalloc='" + d_mymalloc + "'"
02e1c2f1 6002$ WC "d_nanosleep='" + d_nanosleep + "'"
570bb66e 6003$ WC "d_nice='define'"
2765b840 6004$ WC "d_nl_langinfo='" + d_nl_langinfo + "'"
570bb66e 6005$ WC "d_nv_preserves_uv='" + d_nv_preserves_uv + "'"
1e74786a 6006$ WC "nv_overflows_integers_at='" + nv_overflows_integers_at + "'"
53133ed1 6007$ WC "nv_preserves_uv_bits='" + nv_preserves_uv_bits + "'"
f607920a 6008$ WC "d_nv_zero_is_allbits_zero='define'"
570bb66e
JH
6009$ WC "d_off64_t='" + d_off64_t + "'"
6010$ WC "d_old_pthread_create_joinable='" + d_old_pthread_create_joinable + "'"
6011$ WC "d_oldarchlib='define'"
6012$ WC "d_oldpthreads='" + d_oldpthreads + "'"
6013$ WC "d_open3='define'"
6014$ WC "d_pathconf='" + d_pathconf + "'"
6015$ WC "d_pause='define'"
6016$ WC "d_perl_otherlibdirs='undef'"
414b89cc 6017$ WC "d_phostname='" + d_phostname + "'"
570bb66e 6018$ WC "d_pipe='define'"
d2d53deb 6019$ WC "d_poll='" + d_poll + "'"
e9a8643a 6020$ WC "d_procselfexe='undef'"
734e0e83 6021$ WC "d_pseudofork='undef'"
d6483fcc 6022$ WC "d_pthread_atfork='undef'"
e0e3c57a 6023$ WC "d_pthread_attr_setscope='" + d_pthread_attr_setscope + "'"
570bb66e
JH
6024$ WC "d_pthread_yield='" + d_pthread_yield + "'"
6025$ WC "d_pthreads_created_joinable='" + d_pthreads_created_joinable + "'"
6026$ WC "d_pwage='undef'"
6027$ WC "d_pwchange='undef'"
6028$ WC "d_pwclass='undef'"
6029$ WC "d_pwcomment='define'"
6030$ WC "d_pwexpire='undef'"
6031$ WC "d_pwgecos='define'"
6032$ WC "d_pwpasswd='define'"
6033$ WC "d_pwquota='undef'"
6034$ WC "d_qgcvt='undef'"
6035$ WC "d_quad='" + d_quad + "'"
6036$ WC "d_readdir='define'"
96021e87 6037$ WC "d_readlink='" + d_readlink + "'"
570bb66e 6038$ WC "d_readv='undef'"
96021e87 6039$ WC "d_realpath='" + d_realpath + "'"
570bb66e
JH
6040$ WC "d_recvmsg='undef'"
6041$ WC "d_rename='define'"
6042$ WC "d_rewinddir='define'"
6043$ WC "d_rmdir='define'"
6044$ WC "d_safebcpy='undef'"
6045$ WC "d_safemcpy='define'"
6046$ WC "d_sanemcmp='define'"
414b89cc 6047$ WC "d_sbrkproto='define'"
e10940c3 6048$ WC "d_scalbnl='undef'"
570bb66e
JH
6049$ WC "d_sched_yield='" + d_sched_yield + "'"
6050$ WC "d_scm_rights='undef'"
6051$ WC "d_seekdir='define'"
6052$ WC "d_select='" + d_select + "'"
6053$ WC "d_sem='undef'"
6054$ WC "d_semctl_semid_ds='undef'"
6055$ WC "d_semctl_semun='undef'"
6056$ WC "d_sendmsg='undef'"
6057$ WC "d_setegid='undef'"
6058$ WC "d_setenv='" + d_setenv + "'"
96021e87
JM
6059$ WC "d_seteuid='" + d_seteuid + "'"
6060$ WC "d_setgrent='" + d_setgrent + "'"
570bb66e
JH
6061$ WC "d_setgrps='undef'"
6062$ WC "d_sethent='" + d_sethent + "'"
10eefe7f 6063$ WC "d_setitimer='" + d_setitimer + "'"
570bb66e
JH
6064$ WC "d_setlinebuf='undef'"
6065$ WC "d_setlocale='" + d_setlocale + "'"
6066$ WC "d_setnent='" + d_setnent + "'"
6067$ WC "d_setpent='" + d_setpent + "'"
96021e87 6068$ WC "d_setpgid='" + d_setpgid + "'"
570bb66e 6069$ WC "d_setpgrp2='undef'"
96021e87 6070$ WC "d_setpgrp='" + d_setpgrp + "'"
570bb66e
JH
6071$ WC "d_setprior='undef'"
6072$ WC "d_setproctitle='" + d_setproctitle + "'"
6073$ WC "d_setpwent='define'"
96021e87 6074$ WC "d_setregid='" + d_setregid + "'"
570bb66e
JH
6075$ WC "d_setresgid='undef'"
6076$ WC "d_setresuid='undef'"
96021e87 6077$ WC "d_setreuid='" + d_setreuid + "'"
570bb66e
JH
6078$ WC "d_setrgid='undef'"
6079$ WC "d_setruid='undef'"
6080$ WC "d_setsent='" + d_setsent + "'"
96021e87 6081$ WC "d_setsid='" + d_setsid + "'"
570bb66e
JH
6082$ WC "d_setvbuf='" + d_setvbuf + "'"
6083$ WC "d_sfio='undef'"
6084$ WC "d_shm='undef'"
6085$ WC "d_shmatprototype='undef'"
6086$ WC "d_sigaction='" + d_sigaction + "'"
50ddda1d 6087$ WC "d_signbit='" + d_signbit + "'"
983dbef6 6088$ WC "d_sigprocmask='" + d_sigprocmask + "'"
570bb66e 6089$ WC "d_sigsetjmp='" + d_sigsetjmp + "'"
a04d9d89 6090$ WC "d_sitearch='define'"
49a78c82 6091$ WC "d_sockatmark='undef'"
2ef53570 6092$ WC "d_sockatmarkproto='undef'"
570bb66e
JH
6093$ WC "d_socket='" + d_socket + "'"
6094$ WC "d_socklen_t='" + d_socklen_t + "'"
96021e87 6095$ WC "d_sockpair='" + d_sockpair + "'"
1b9c9cf5 6096$ WC "d_socks5_init='undef'"
a1f21542 6097$ WC "d_sprintf_returns_strlen='define'"
570bb66e 6098$ WC "d_sqrtl='define'"
eef837ea 6099$ WC "d_sresgproto='undef'"
2ef53570
JH
6100$ WC "d_sresgproto='undef'"
6101$ WC "d_sresproto='undef'"
f42f5b4c 6102$ WC "d_sresuproto='undef'"
570bb66e
JH
6103$ WC "d_statblks='undef'"
6104$ WC "d_statfs_f_flags='undef'"
6105$ WC "d_statfs_s='undef'"
6106$ WC "d_statfsflags='undef'"
6107$ WC "d_stdio_cnt_lval='" + d_stdio_cnt_lval + "'"
6108$ WC "d_stdio_ptr_lval='" + d_stdio_ptr_lval + "'"
a7ffa9b9 6109$ WC "d_stdio_ptr_lval_nochange_cnt='" + d_stdio_ptr_lval_nochange_cnt + "'"
2ef53570 6110$ WC "d_stdio_ptr_lval_sets_cnt='" + d_stdio_ptr_lval_sets_cnt + "'"
570bb66e
JH
6111$ WC "d_stdio_stream_array='undef'"
6112$ WC "d_stdiobase='" + d_stdiobase + "'"
6113$ WC "d_stdstdio='" + d_stdstdio + "'"
ea77424f 6114$ WC "d_faststdio='" + d_faststdio + "'"
570bb66e
JH
6115$ WC "d_strchr='define'"
6116$ WC "d_strcoll='" + d_strcoll + "'"
6117$ WC "d_strctcpy='define'"
6118$ WC "d_strerrm='strerror((e),vaxc$errno)'"
6119$ WC "d_strerror='define'"
b3c85772 6120$ WC "d_strftime='define'"
81aa54e6
CB
6121$ WC "d_strlcat='undef'"
6122$ WC "d_strlcpy='undef'"
570bb66e
JH
6123$ WC "d_strtod='define'"
6124$ WC "d_strtol='define'"
6125$ WC "d_strtold='" + d_strtold + "'"
6126$ WC "d_strtoll='" + d_strtoll + "'"
b8c0d87f 6127$ WC "d_strtoq='" + d_strtoq + "'"
570bb66e
JH
6128$ WC "d_strtoul='define'"
6129$ WC "d_strtoull='" + d_strtoull + "'"
6130$ WC "d_strtouq='" + d_strtouq + "'"
6131$ WC "d_strxfrm='" + d_strxfrm + "'"
6132$ WC "d_suidsafe='undef'"
96021e87 6133$ WC "d_symlink='" + d_symlink + "'"
570bb66e 6134$ WC "d_syscall='undef'"
2ef53570 6135$ WC "d_syscallproto='undef'"
570bb66e
JH
6136$ WC "d_sysconf='" + d_sysconf + "'"
6137$ WC "d_syserrlst='undef'"
6138$ WC "d_system='define'"
6139$ WC "d_tcgetpgrp='undef'"
6140$ WC "d_tcsetpgrp='undef'"
6141$ WC "d_telldir='define'"
6142$ WC "d_telldirproto='define'"
8f44d1a8 6143$ WC "d_time='define'"
597140e2 6144$ WC "d_timegm='undef'"
570bb66e 6145$ WC "d_times='define'"
7bb28473
CB
6146$ IF ("''F$EXTRACT(1,3, F$GETSYI(""VERSION""))'".GES."7.0")
6147$ THEN
6148$ WC "d_tm_tm_gmtoff='define'"
6149$ WC "d_tm_tm_zone='define'"
6150$ ELSE
6151$ WC "d_tm_tm_gmtoff='undef'"
6152$ WC "d_tm_tm_zone='undef'"
6153$ ENDIF
570bb66e 6154$ WC "d_truncate='" + d_truncate + "'"
a3bd614a 6155$ WC "d_tzname='" + d_tzname + "'"
4e0554ec 6156$ WC "d_u32align='define'"
10eefe7f 6157$ WC "d_ualarm='" + d_ualarm + "'"
570bb66e
JH
6158$ WC "d_umask='define'"
6159$ WC "d_uname='" + d_uname + "'"
6160$ WC "d_union_semun='undef'"
4adb8845 6161$ WC "d_unlink_all_versions='" + d_unlink_all_versions + "'" ! VMS-specific
758a5d79 6162$ WC "d_unordered='undef'"
0ee1060b 6163$ WC "d_unsetenv='" + d_unsetenv + "'"
5ff34fde 6164$ WC "d_clearenv='" + d_clearenv + "'"
10eefe7f
CB
6165$ WC "d_usleep='" + d_usleep + "'"
6166$ WC "d_usleepproto='" + d_usleep + "'"
570bb66e
JH
6167$ WC "d_ustat='undef'"
6168$ WC "d_vendorarch='undef'"
6169$ WC "d_vendorlib='undef'"
6170$ WC "d_vfork='define'"
6171$ WC "d_vms_case_sensitive_symbols='" + d_vms_be_case_sensitive + "'" ! VMS
6172$ WC "d_vms_do_sockets='" + d_vms_do_sockets + "'" ! VMS
6173$ WC "d_void_closedir='define'"
6174$ WC "d_volatile='define'"
6175$ WC "d_vprintf='define'"
d00eb249 6176$ WC "d_vsnprintf='" + d_vsnprintf + "'"
570bb66e
JH
6177$ WC "d_wait4='" + d_wait4 + "'"
6178$ WC "d_waitpid='define'"
6179$ WC "d_wcstombs='" + d_wcstombs + "'"
6180$ WC "d_wctomb='" + d_wctomb + "'"
6181$ WC "d_writev='undef'"
6182$ WC "db_hashtype=' '"
6183$ WC "db_prefixtype=' '"
fcc434ad
PP
6184$ WC "db_version_major='" + "'"
6185$ WC "db_version_minor='" + "'"
6186$ WC "db_version_patch='" + "'"
570bb66e
JH
6187$ WC "dbgprefix='" + dbgprefix + "'"
6188$ WC "defvoidused='15'"
6189$ WC "devtype='" + devtype + "'"
6190$ WC "direntrytype='struct dirent'"
6191$ WC "dlext='" + dlext + "'"
6192$ WC "dlobj='" + dlobj + "'"
6193$ WC "dlsrc='dl_vms.c'"
6194$ WC "doublesize='" + doublesize + "'"
6195$ WC "drand01='" + drand01 + "'"
83d8c294 6196$ WC "dtrace='" + "'"
a3bd614a
PP
6197$!
6198$! The extensions symbol may be quite long
6199$!
6200$ tmp = "dynamic_ext='" + extensions + "'"
6201$ WC/symbol tmp
6202$ DELETE/SYMBOL tmp
570bb66e
JH
6203$ WC "eagain=' '"
6204$ WC "ebcdic='undef'"
9b5c8979 6205$ WC "embedmymalloc='" + usemymalloc + "'"
570bb66e
JH
6206$ WC "eunicefix=':'"
6207$ WC "exe_ext='" + exe_ext + "'"
a3bd614a
PP
6208$!
6209$! The extensions symbol may be quite long
6210$!
6211$ tmp = "extensions='" + extensions + "'"
6212$ WC/symbol tmp
6213$ DELETE/SYMBOL tmp
570bb66e
JH
6214$ WC "fflushNULL='define'"
6215$ WC "fflushall='undef'"
6216$ WC "fpostype='fpos_t'"
6217$ WC "freetype='void'"
6218$ WC "full_ar='" + "'"
6219$ WC "full_csh='" + " '"
6220$ WC "full_sed='_NLA0:'"
6221$ WC "gccversion='" + gccversion + "'"
6222$ WC "gidformat='lu'"
6223$ WC "gidsign='1'"
6224$ WC "gidsize='4'"
6225$ WC "gidtype='" + gidtype + "'"
6226$ WC "groupstype='Gid_t'"
6227$ WC "hint='none'"
6228$ WC "hintfile='" + "'"
6229$ WC "i16size='" + i16size + "'"
6230$ WC "i16type='" + i16type + "'"
6231$ WC "i32size='" + i32size + "'"
6232$ WC "i32type='" + i32type + "'"
6233$ WC "i64size='" + i64size + "'"
6234$ WC "i64type='" + i64type + "'"
6235$ WC "i8size='" + i8size + "'"
6236$ WC "i8type='" + i8type + "'"
6237$ WC "i_arpainet='undef'"
2a0de2c5 6238$ WC "i_assert='define'"
4f93eb5d 6239$ WC "i_crypt='undef'"
fcc434ad 6240$ WC "i_db='undef'"
570bb66e 6241$ WC "i_dbm='undef'"
7558ebc2 6242$ WC "i_dirent='" + i_dirent + "'"
570bb66e
JH
6243$ WC "i_dlfcn='undef'"
6244$ WC "i_fcntl='" + i_fcntl + "'"
6245$ WC "i_float='define'"
758a5d79
JH
6246$ WC "i_fp='undef'"
6247$ WC "i_fp_class='undef'"
0b57cc8d 6248$ WC "i_gdbm='undef'"
3ab94133
AD
6249$ WC "i_gdbm_ndbm='undef'"
6250$ WC "i_gdbmndbm='undef'"
9fa802f3 6251$ WC "i_grp='" + i_grp + "'"
570bb66e
JH
6252$ WC "i_ieeefp='undef'"
6253$ WC "i_inttypes='" + i_inttypes + "'"
2765b840 6254$ WC "i_langinfo='" + i_langinfo + "'"
570bb66e
JH
6255$ WC "i_libutil='" + i_libutil + "'"
6256$ WC "i_limits='define'"
6257$ WC "i_locale='" + i_locale + "'"
6258$ WC "i_machcthr='undef'"
6259$ WC "i_machcthreads='undef'"
1cd66f7c 6260$ WC "i_mallocmalloc='undef'"
570bb66e
JH
6261$ WC "i_math='define'"
6262$ WC "i_memory='undef'"
6263$ WC "i_mntent='undef'"
6264$ WC "i_ndbm='undef'"
6265$ WC "i_netdb='" + i_netdb + "'"
6266$ WC "i_neterrno='define'"
6267$ WC "i_netinettcp='" + i_netinettcp + "'"
6268$ WC "i_niin='" + i_niin + "'"
6269$ WC "i_poll='" + i_poll + "'"
6270$ WC "i_prot='undef'"
6271$ WC "i_pthread='define'"
6272$ WC "i_pwd='undef'"
6273$ WC "i_rpcsvcdbm='undef'"
6274$ WC "i_sfio='undef'"
6275$ WC "i_sgtty='undef'"
6276$ WC "i_shadow='" + i_shadow + "'"
6277$ WC "i_socks='" + i_socks + "'"
6278$ WC "i_stdarg='define'"
6279$ WC "i_stddef='define'"
6280$ WC "i_stdlib='define'"
6281$ WC "i_string='define'"
6282$ WC "i_sunmath='undef'"
6283$ WC "i_sysaccess='" + i_sysaccess + "'"
6284$ WC "i_sysdir='undef'"
6285$ WC "i_sysfile='" + i_sysfile + "'"
670137c2 6286$ WC "i_sysioctl='" + i_sysioctl + "'"
570bb66e
JH
6287$ WC "i_syslog='" + i_syslog + "'"
6288$ WC "i_sysmman='undef'"
6289$ WC "i_sysmode='" + i_sysmode + "'"
6290$ WC "i_sysmount='undef'"
6291$ WC "i_sysndir='undef'"
6292$ WC "i_sysparam='undef'"
ed1b9de0 6293$ WC "i_syspoll='" + i_syspoll + "'"
570bb66e
JH
6294$ WC "i_sysresrc='undef'"
6295$ WC "i_syssecrt='" + i_syssecrt + "'"
6296$ WC "i_sysselct='undef'"
49a78c82 6297$ WC "i_syssockio='undef'"
570bb66e
JH
6298$ WC "i_sysstat='define'"
6299$ WC "i_sysstatfs='undef'"
96021e87 6300$ WC "i_sysstatvfs='" + i_sysstatvfs + "'"
570bb66e
JH
6301$ WC "i_systime='undef'"
6302$ WC "i_systimek='undef'"
6303$ WC "i_systimes='undef'"
6304$ WC "i_systypes='define'"
6305$ WC "i_sysuio='" + i_sysuio + "'"
6306$ WC "i_sysun='undef'"
6307$ WC "i_sysutsname='" + i_sysutsname + "'"
6308$ WC "i_sysvfs='undef'"
6309$ WC "i_syswait='undef'"
6310$ WC "i_termio='undef'"
6311$ WC "i_termios='undef'"
6312$ WC "i_time='define'"
6313$ WC "i_unistd='" + i_unistd + "'"
6314$ WC "i_ustat='undef'"
704c2eb3 6315$ WC "i_utime='" + i_utime + "'"
570bb66e
JH
6316$ WC "i_values='undef'"
6317$ WC "i_varargs='undef'"
6318$ WC "i_vfork='undef'"
6319$ WC "inc_version_list='0'"
6320$ WC "inc_version_list_init='0'"
6321$ WC "installarchlib='" + installarchlib + "'"
6322$ WC "installbin='" + installbin + "'"
6323$ WC "installman1dir='" + installman1dir + "'"
6324$ WC "installman3dir='" + installman3dir + "'"
ec18bc92
CB
6325$ WC "installprefix='" + vms_prefix + "'"
6326$ WC "installprefixexp='" + vms_prefix + ":'"
570bb66e
JH
6327$ WC "installprivlib='" + installprivlib + "'"
6328$ WC "installscript='" + installscript + "'"
6329$ WC "installsitearch='" + installsitearch + "'"
ec18bc92 6330$ WC "installsitebin='" + sitebin + "'"
570bb66e
JH
6331$ WC "installsitelib='" + installsitelib + "'"
6332$ WC "installusrbinperl='undef'"
6333$ WC "intsize='" + intsize + "'"
6334$ WC "ivdformat='" + ivdformat + "'"
6335$ WC "ivsize='" + ivsize + "'"
6336$ WC "ivtype='" + ivtype + "'"
a3bd614a
PP
6337$!
6338$! The known_extensions symbol may be quite long
6339$!
6340$ tmp = "known_extensions='" + known_extensions + "'"
6341$ WC/symbol tmp
6342$ DELETE/SYMBOL tmp
570bb66e
JH
6343$ WC "ld='" + ld + "'"
6344$ WC "lddlflags='/Share'"
f24fb74c 6345$ WC "ldflags='" + ldflags + "'"
e0261ef8 6346$ WC "ldflags_uselargefiles='" + "'"
570bb66e
JH
6347$ WC "lib_ext='" + lib_ext + "'"
6348$ WC "libc='" + libc + "'"
6349$ WC "libpth='/sys$share /sys$library'"
6350$ WC "libs='" + libs + "'"
e0261ef8
CB
6351$ WC "libswanted='" + "'"
6352$ WC "libswanted_uselargefiles='" + "'"
570bb66e
JH
6353$ WC "longdblsize='" + longdblsize + "'"
6354$ WC "longlongsize='" + longlongsize + "'"
6355$ WC "longsize='" + longsize + "'"
e0261ef8
CB
6356$ IF uselargefiles .OR. uselargefiles .EQS. "define"
6357$ THEN
6358$ WC "lseeksize='8'"
6359$ WC "lseektype='off_t'"
6360$ ELSE
6361$ WC "lseeksize='4'"
6362$ WC "lseektype='int'"
6363$ ENDIF
570bb66e 6364$ WC "mab='" + "'"
a724edfe 6365$ WC "mad='undef'"
570bb66e
JH
6366$ WC "make='" + make + "'"
6367$ WC "malloctype='void *'"
dc8c9d5a 6368$ WC "usemallocwrap='" + usemallocwrap + "'"
570bb66e
JH
6369$ WC "man1ext='rno'"
6370$ WC "man3ext='rno'"
10eefe7f 6371$ WC "mmaptype='void *'"
570bb66e
JH
6372$ WC "modetype='unsigned int'"
6373$ WC "multiarch='undef'"
6374$ WC "mydomain='" + mydomain + "'"
6375$ WC "myhostname='" + myhostname + "'"
6376$ WC "myuname='" + myuname + "'"
2cc61e15 6377$ WC "need_va_copy='undef'"
570bb66e
JH
6378$ WC "netdb_hlen_type='" + netdb_hlen_type + "'"
6379$ WC "netdb_host_type='" + netdb_host_type + "'"
6380$ WC "netdb_name_type='" + netdb_name_type + "'"
6381$ WC "netdb_net_type='" + netdb_net_type + "'"
5581d86f 6382$ WC "nonxs_ext='" + nonxs_ext + "'"
fd47df60
JH
6383$ WC "nveformat='" + nveformat + "'"
6384$ WC "nvfformat='" + nvfformat + "'"
6385$ WC "nvgformat='" + nvgformat + "'"
570bb66e
JH
6386$ WC "nvsize='" + nvsize + "'"
6387$ WC "nvtype='" + nvtype + "'"
6388$ WC "o_nonblock=' '"
6389$ WC "obj_ext='" + obj_ext + "'"
6390$ WC "old_pthread_create_joinable='" + old_pthread_create_joinable + "'"
6391$ WC "oldarchlib='" + oldarchlib + "'"
6392$ WC "oldarchlibexp='" + oldarchlibexp + "'"
6393$ WC "optimize='" + optimize + "'"
6394$ WC "osname='" + osname + "'"
6395$ WC "osvers='" + osvers + "'"
6396$ WC "otherlibdirs='" + "'"
6397$ WC "package='" + package + "'"
6398$ WC "pager='" + pager + "'"
6399$ WC "patchlevel='" + patchlevel + "'"
6400$ WC "path_sep='|'"
6401$ WC "perl_root='" + perl_root + "'" ! VMS specific $trnlnm()
6402$ WC "perladmin='" + perladmin + "'"
94928b12 6403$ WC "perllibs='" + perllibs + "'"
972e9305 6404$ WC "perlpath='" + "''vms_prefix':[000000]Perl''exe_ext'" + "'"
9b5c8979
JH
6405$ WC "perl_symbol='" + perl_symbol + "'" ! VMS specific
6406$ WC "perl_verb='" + perl_verb + "'" ! VMS specific
570bb66e
JH
6407$ WC "pgflquota='" + pgflquota + "'"
6408$ WC "pidtype='" + pidtype + "'"
70c20b69 6409$ WC "prefix='" + vms_prefix + "'"
b4558e59 6410$ WC "prefixexp='" + vms_prefix + ":'"
570bb66e
JH
6411$ WC "privlib='" + privlib + "'"
6412$ WC "privlibexp='" + privlibexp + "'"
357cef76 6413$ WC "procselfexe=' '"
570bb66e
JH
6414$ WC "prototype='define'"
6415$ WC "ptrsize='" + ptrsize + "'"
6416$ WC "quadkind='" + quadkind + "'"
6417$ WC "quadtype='" + quadtype + "'"
cd3eeb19
CB
6418$ WC "randbits='" + randbits + "'"
6419$ WC "randfunc='" + randfunc + "'"
570bb66e
JH
6420$ WC "randseedtype='" + randseedtype + "'"
6421$ WC "ranlib='" + "'"
6422$ WC "rd_nodata=' '"
6423$ WC "revision='" + revision + "'"
96938616
MB
6424$ WC "sGMTIME_max='2147483647'"
6425$ WC "sGMTIME_min='0'"
6426$ WC "sLOCALTIME_max='2147483647'"
6427$ WC "sLOCALTIME_min='0'"
570bb66e 6428$ WC "sPRId64='" + sPRId64 + "'"
6b356c8e
JH
6429$ WC "sPRIEldbl='" + sPRIEUldbl + "'"
6430$ WC "sPRIFldbl='" + sPRIFUldbl + "'"
6431$ WC "sPRIGldbl='" + sPRIGUldbl + "'"
6432$ WC "sPRIX64='" + sPRIXU64 + "'"
59a27e12 6433$ WC "sPRIeldbl='" + sPRIeldbl + "'"
570bb66e
JH
6434$ WC "sPRIfldbl='" + sPRIfldbl + "'"
6435$ WC "sPRIgldbl='" + sPRIgldbl + "'"
6436$! WC "sPRIi64='" + sPRIi64 + "'"
6437$ WC "sPRIo64='" + sPRIo64 + "'"
6438$ WC "sPRIu64='" + sPRIu64 + "'"
6439$ WC "sPRIx64='" + sPRIx64 + "'"
b5ddfb46 6440$ WC "sSCNfldbl='" + sSCNfldbl + "'"
570bb66e 6441$ WC "sched_yield='" + sched_yield + "'"
f688e3ac 6442$ WC "scriptdir='" + scriptdir + "'"
86761af6 6443$ WC "scriptdirexp='" + scriptdir + "'" ! use scriptdir for now
570bb66e
JH
6444$ WC "seedfunc='" + seedfunc + "'"
6445$ WC "selectminbits='32'"
6446$ WC "selecttype='" + selecttype + "'"
6447$ WC "sh='MCR'"
58046ef3 6448$ WC "sharpbang='#!'"
414b89cc 6449$ WC "shmattype='" + " '"
570bb66e 6450$ WC "shortsize='" + shortsize + "'"
fe1de8ce
CB
6451$ IF (f$length(sig_name) .GE. 244)
6452$ THEN
6453$ tmp = "sig_name='" + sig_name + "'"
6454$ WC/symbol tmp
6455$ DELETE/SYMBOL tmp
6456$ ELSE
6457$ WC "sig_name='" + sig_name + "'"
6458$ ENDIF
6459$ IF (f$length(sig_name_init) .GE. 244)
ecd6e098
AT
6460$ THEN
6461$ tmp = "sig_name_init='" + sig_name_init + "'"
6462$ WC/symbol tmp
6463$ DELETE/SYMBOL tmp
6464$ ELSE
6465$ WC "sig_name_init='" + sig_name_init + "'"
6466$ ENDIF
570bb66e
JH
6467$ WC "sig_num='" + sig_num + "'"
6468$ WC "sig_num_init='" + sig_num_init + "'"
acabf64b 6469$ WC "sig_count='" + sig_count + "'"
76d3c696 6470$ WC "sig_size='" + sig_size + "'"
570bb66e
JH
6471$ WC "signal_t='" + signal_t + "'"
6472$ WC "sitearch='" + sitearch + "'"
6473$ WC "sitearchexp='" + sitearchexp + "'"
ec18bc92
CB
6474$ WC "sitebin='" + sitebin + "'"
6475$ WC "sitebinexp='" + sitebin + "'"
570bb66e
JH
6476$ WC "sitelib='" + sitelib + "'"
6477$ WC "sitelib_stem='" + sitelib_stem + "'"
6478$ WC "sitelibexp='" + sitelibexp + "'"
ec18bc92
CB
6479$ WC "siteprefix='" + vms_prefix + "'"
6480$ WC "siteprefixexp='" + vms_prefix + ":'"
570bb66e
JH
6481$ WC "sizesize='" + sizesize + "'"
6482$ WC "sizetype='size_t'"
6483$ WC "so='" + so + "'"
6484$ WC "socksizetype='" + socksizetype + "'"
6485$ WC "spitshell='write sys$output '"
6486$ WC "src='" + src + "'"
6487$ WC "ssizetype='int'"
6488$ WC "startperl=" + startperl ! This one's special--no enclosing single quotes
17e8697d 6489$ WC "static_ext='" + static_ext + "'"
570bb66e
JH
6490$ WC "stdchar='" + stdchar + "'"
6491$ WC "stdio_base='((*fp)->_base)'"
6492$ WC "stdio_bufsiz='((*fp)->_cnt + (*fp)->_ptr - (*fp)->_base)'"
6493$ WC "stdio_cnt='((*fp)->_cnt)'"
6494$ WC "stdio_ptr='((*fp)->_ptr)'"
59a27e12 6495$ WC "stdio_stream_array=' " + "'"
570bb66e 6496$ WC "subversion='" + subversion + "'"
d91e3179 6497$ WC "targetarch='" + "'"
570bb66e
JH
6498$ WC "timetype='" + timetype + "'"
6499$ WC "u16size='" + u16size + "'"
6500$ WC "u16type='" + u16type + "'"
6501$ WC "u32size='" + u32size + "'"
6502$ WC "u32type='" + u32type + "'"
6503$ WC "u64size='" + u64size + "'"
6504$ WC "u64type='" + u64type + "'"
6505$ WC "u8size='" + u8size + "'"
6506$ WC "u8type='" + u8type + "'"
6507$ WC "uidformat='lu'"
6508$ WC "uidsign='1'"
6509$ WC "uidsize='4'"
6510$ WC "uidtype='" + uidtype + "'"
6511$ WC "uquadtype='" + uquadtype + "'"
6512$ WC "use5005threads='" + use5005threads + "'"
6513$ WC "use64bitall='" + use64bitall + "'"
6514$ WC "use64bitint='" + use64bitint + "'"
9b5c8979
JH
6515$ WC "usecasesensitive='" + be_case_sensitive + "'" ! VMS-specific
6516$ WC "usedebugging_perl='"+use_debugging_perl+"'"
6517$ WC "usedefaulttypes='" + usedefaulttypes + "'" ! VMS-specific
5440bc8e 6518$ WC "usecrosscompile='undef'"
570bb66e 6519$ WC "usedl='" + usedl + "'"
5ac1e9b2 6520$ WC "usedtrace='undef'"
ea77424f 6521$ WC "usefaststdio='" + usefaststdio + "'"
9b5c8979 6522$ WC "useieee='" + useieee + "'" ! VMS-specific
570bb66e 6523$ WC "useithreads='" + useithreads + "'"
3f39e13a 6524$ WC "usekernelthreads='" + usekernelthreads + "'" ! VMS-specific
570bb66e
JH
6525$ WC "uselargefiles='" + uselargefiles + "'"
6526$ WC "uselongdouble='" + uselongdouble + "'"
6527$ WC "usemorebits='" + usemorebits + "'"
6528$ WC "usemultiplicity='" + usemultiplicity + "'"
6529$ WC "usemymalloc='" + usemymalloc + "'"
c998f3c7 6530$ WC "useperlio='" + useperlio + "'"
570bb66e 6531$ WC "useposix='false'"
9514c62b 6532$ WC "usereentrant='undef'"
4fd0a66c 6533$ WC "userelocatableinc='undef'"
9b5c8979 6534$ WC "usesecurelog='" + usesecurelog + "'" ! VMS-specific
b672680a 6535$ WC "useshrplib='true'"
79e63f36 6536$ WC "usesitecustomize='" + usesitecustomize + "'"
570bb66e
JH
6537$ WC "usesocks='undef'"
6538$ WC "usethreads='" + usethreads + "'"
3f39e13a 6539$ WC "usethreadupcalls='" + usethreadupcalls + "'" ! VMS-specific
ec18bc92 6540$ WC "usevendorprefix='" + "'" ! try to say no, though we'll be ignored as of MM 5.90_01
570bb66e 6541$ WC "usevfork='true'"
9b5c8979 6542$ WC "usevmsdebug='" + usevmsdebug + "'" ! VMS-specific
570bb66e
JH
6543$ WC "uvoformat='" + uvoformat + "'"
6544$ WC "uvsize='" + uvsize + "'"
6545$ WC "uvtype='" + uvtype + "'"
6546$ WC "uvuformat='" + uvuformat + "'"
6547$ WC "uvxformat='" + uvxformat + "'"
414b89cc 6548$ WC "uvXUformat='" + uvXUformat + "'"
ec18bc92 6549$ WC "vendorarch='" + "'"
570bb66e 6550$ WC "vendorarchexp='" + "'"
ec18bc92
CB
6551$ WC "vendorbin='" + "'"
6552$ WC "vendorbinexp='" + "'"
570bb66e 6553$ WC "vendorlib_stem='" + "'"
ec18bc92 6554$ WC "vendorlib='" + "'"
570bb66e 6555$ WC "vendorlibexp='" + "'"
ec18bc92
CB
6556$ WC "vendorprefix='" + "'"
6557$ WC "vendorprefixexp='" + "'"
570bb66e 6558$ WC "version='" + version + "'"
9ec25520 6559$ WC "version_patchlevel_string='" + version_patchlevel_string + "'"
570bb66e
JH
6560$ WC "vms_cc_type='" + vms_cc_type + "'" ! VMS specific
6561$ WC "vms_prefix='" + vms_prefix + "'" ! VMS specific
6562$ WC "vms_ver='" + vms_ver + "'" ! VMS specific
6563$ WC "voidflags='15'"
10bc17b6
JH
6564$!
6565$! ## The UNIXy POSIXy reentrantey thingys ##
8df869cb
CB
6566$! See "Appendix B, Version-Dependency Tables" in the C RTL
6567$! manual for when assorted _r functions became available.
10bc17b6 6568$!
8df869cb
CB
6569$ IF use_threads .AND. vms_ver .GES. "7.2"
6570$ THEN
4f93eb5d 6571$ WC "asctime_r_proto='REENTRANT_PROTO_B_SB'"
8df869cb 6572$ WC "d_asctime_r='define'"
4f93eb5d 6573$ WC "ctime_r_proto='REENTRANT_PROTO_B_SB'"
8df869cb 6574$ WC "d_ctime_r='define'"
8df869cb
CB
6575$ ELSE
6576$ WC "asctime_r_proto='0'"
6577$ WC "d_asctime_r='undef'"
4f93eb5d 6578$ WC "ctime_r_proto='0'"
8df869cb 6579$ WC "d_ctime_r='undef'"
8df869cb 6580$ ENDIF
10bc17b6
JH
6581$ WC "d_crypt_r='undef'"
6582$ WC "d_ctermid_r='undef'"
10bc17b6
JH
6583$ WC "d_drand48_r='undef'"
6584$ WC "d_endgrent_r='undef'"
6585$ WC "d_endhostent_r='undef'"
6586$ WC "d_endnetent_r='undef'"
6587$ WC "d_endprotoent_r='undef'"
6588$ WC "d_endpwent_r='undef'"
6589$ WC "d_endservent_r='undef'"
6590$ WC "d_getgrent_r='undef'"
96021e87
JM
6591$ WC "d_getgrgid_r='" + d_getgrgid_r + "'"
6592$ WC "d_getgrnam_r='" + d_getgrnam_r + "'"
10bc17b6
JH
6593$ WC "d_gethostbyaddr_r='undef'"
6594$ WC "d_gethostbyname_r='undef'"
6595$ WC "d_gethostent_r='undef'"
6596$ WC "d_getlogin_r='undef'"
6597$ WC "d_getnetbyaddr_r='undef'"
6598$ WC "d_getnetbyname_r='undef'"
6599$ WC "d_getnetent_r='undef'"
6600$ WC "d_getprotobyname_r='undef'"
6601$ WC "d_getprotobynumber_r='undef'"
6602$ WC "d_getprotoent_r='undef'"
6603$ WC "d_getpwent_r='undef'"
96021e87
JM
6604$ WC "d_getpwnam_r='" + d_getpwnam_r + "'"
6605$ WC "d_getpwuid_r='" + d_getpwuid_r + "'"
10bc17b6
JH
6606$ WC "d_getservbyname_r='undef'"
6607$ WC "d_getservbyport_r='undef'"
6608$ WC "d_getservent_r='undef'"
6609$ WC "d_getspnam_r='undef'"
4f93eb5d
CB
6610$ WC "d_gmtime_r='undef'" ! leave undef'd; we use my_gmtime
6611$ WC "d_localtime_r='undef'" ! leave undef'd; we use my_localtime
f025e94b 6612$ WC "d_localtime_r_needs_tzset='undef'"
10bc17b6 6613$ WC "d_random_r='undef'"
a9852f7c 6614$ WC "d_readdir_r='define'" ! always defined; we roll our own
10bc17b6 6615$ WC "d_readdir64_r='undef'"
10bc17b6
JH
6616$ WC "d_setgrent_r='undef'"
6617$ WC "d_sethostent_r='undef'"
6618$ WC "d_setlocale_r='undef'"
6619$ WC "d_setnetent_r='undef'"
6620$ WC "d_setprotoent_r='undef'"
6621$ WC "d_setpwent_r='undef'"
6622$ WC "d_setservent_r='undef'"
d00eb249 6623$ WC "d_snprintf='" + d_snprintf + "'"
10bc17b6
JH
6624$ WC "d_srand48_r='undef'"
6625$ WC "d_srandom_r='undef'"
6626$ WC "d_strerror_r='undef'"
6627$ WC "d_tmpnam_r='undef'"
96021e87 6628$ WC "d_ttyname_r='" + d_ttyname_r + "'"
4f93eb5d
CB
6629$ WC "ctermid_r_proto='0'"
6630$ WC "crypt_r_proto='0'"
10bc17b6
JH
6631$ WC "drand48_r_proto='0'"
6632$ WC "endgrent_r_proto='0'"
6633$ WC "endhostent_r_proto='0'"
6634$ WC "endnetent_r_proto='0'"
6635$ WC "endprotoent_r_proto='0'"
6636$ WC "endpwent_r_proto='0'"
6637$ WC "endservent_r_proto='0'"
6638$ WC "getgrent_r_proto='0'"
96021e87
JM
6639$ WC "getgrgid_r_proto='" + getgrgid_r_proto + "'"
6640$ WC "getgrnam_r_proto='" + getgrnam_r_proto + "'"
10bc17b6
JH
6641$ WC "gethostbyaddr_r_proto='0'"
6642$ WC "gethostbyname_r_proto='0'"
6643$ WC "gethostent_r_proto='0'"
6644$ WC "getlogin_r_proto='0'"
6645$ WC "getnetbyaddr_r_proto='0'"
6646$ WC "getnetbyname_r_proto='0'"
6647$ WC "getnetent_r_proto='0'"
6648$ WC "getprotobyname_r_proto='0'"
6649$ WC "getprotobynumber_r_proto='0'"
6650$ WC "getprotoent_r_proto='0'"
6651$ WC "getpwent_r_proto='0'"
6652$ WC "getpwnam_r_proto='0'"
6653$ WC "getpwuid_r_proto='0'"
6654$ WC "getservbyname_r_proto='0'"
6655$ WC "getservbyport_r_proto='0'"
6656$ WC "getservent_r_proto='0'"
6657$ WC "getspnam_r_proto='0'"
6658$ WC "gmtime_r_proto='0'"
10bc17b6
JH
6659$ WC "localtime_r_proto='0'"
6660$ WC "random_r_proto='0'"
a9852f7c 6661$ WC "readdir_r_proto='REENTRANT_PROTO_I_TSR'" ! always defined; we roll our own
4f93eb5d 6662$ WC "readdir64_r_proto='0'"
10bc17b6
JH
6663$ WC "setgrent_r_proto='0'"
6664$ WC "sethostent_r_proto='0'"
6665$ WC "setlocale_r_proto='0'"
6666$ WC "setnetent_r_proto='0'"
6667$ WC "setprotoent_r_proto='0'"
6668$ WC "setpwent_r_proto='0'"
6669$ WC "setservent_r_proto='0'"
6670$ WC "srand48_r_proto='0'"
6671$ WC "srandom_r_proto='0'"
6672$ WC "strerror_r_proto='0'"
6673$ WC "tmpnam_r_proto='0'"
96021e87 6674$ WC "ttyname_r_proto='" + ttyname_r_proto + "'"
570bb66e
JH
6675$!
6676$! ##END WRITE NEW CONSTANTS HERE##
6677$!
6678$ CLOSE CONFIG
6679$!
6680$! Okay, we've gotten here. Build munchconfig.exe
6681$ COPY/NOLOG [-.vms]munchconfig.c []
7558ebc2 6682$ COPY/NOLOG [-.vms]'Makefile_SH' []
1632ad18 6683$ 'Perl_CC' 'ccflags' munchconfig.c
570bb66e
JH
6684$ IF Needs_Opt
6685$ THEN
6686$ OPEN/WRITE CONFIG []munchconfig.opt
414b89cc 6687$ IF ccname .EQS. "GCC"
570bb66e
JH
6688$ THEN
6689$ WRITE CONFIG "Gnu_CC:[000000]gcclib.olb/library"
6690$ ENDIF
6691$ WRITE CONFIG "Sys$Share:VAXCRTL/Share"
6692$ CLOSE CONFIG
6693$ 'ld' munchconfig.obj,munchconfig.opt/opt
6694$ DELETE/NOLOG/NOCONFIRM munchconfig.opt;
6695$ ELSE
6696$ 'ld' munchconfig.obj
6697$ ENDIF
6698$ IF F$SEARCH("munchconfig.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig.obj;
6699$ IF F$SEARCH("munchconfig.c") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig.c;
414b89cc 6700$ IF ccname .EQS. "CXX"
570bb66e
JH
6701$ THEN
6702$ CALL Cxx_demangler_cleanup
6703$ ENDIF
6704$!
6705$ IF alldone .EQS. ""
6706$ THEN
6707$ cat4 SYS$INPUT:
7558ebc2 6708$ DECK
570bb66e
JH
6709
6710If you'd like to make any changes to the config.sh file before I begin
6711to configure things, answer yes to the following question.
6712
7558ebc2 6713$ EOD
9b5c8979
JH
6714$ bool_dflt="n"
6715$ rp="Do you wish to edit ''basename_config_sh'? [''bool_dflt'] "
570bb66e 6716$ GOSUB myread
570bb66e
JH
6717$ IF ans
6718$ THEN
6719$ echo4 ""
6720$ echo4 "Be sure to type LOGOUT after you have edited the file,"
6721$ echo4 "then this procedure will resume."
6722$ echo4 ""
6723$ default = F$ENVIRONMENT("DEFAULT")
7558ebc2 6724$ DIRECTORY 'config_sh'
570bb66e
JH
6725$ SET DEFAULT [-]
6726$ SPAWN/WAIT
7558ebc2 6727$ SET DEFAULT 'default'
570bb66e
JH
6728$ ENDIF
6729$ ENDIF
6730$!
6731$ echo ""
6732$ echo4 "Adding ''osname' specific preprocessor commands."
6733$ !
6734$ ! we need an fdl file
6735$ CREATE [-]CONFIG.FDL
7558ebc2 6736$ DECK
570bb66e
JH
6737RECORD
6738 FORMAT STREAM_LF
7558ebc2 6739$ EOD
570bb66e
JH
6740$ CREATE /FDL=[-]CONFIG.FDL [-]CONFIG.LOCAL
6741$ ! First spit out the header info with the local defines (to get
6742$ ! around the 255 character command line limit)
6743$ OPEN/APPEND CONFIG [-]config.local
6744$ IF use_debugging_perl THEN WC "#define DEBUGGING"
6745$ IF use_two_pot_malloc THEN WC "#define TWO_POT_OPTIMIZE"
6746$ IF mymalloc THEN WC "#define EMBEDMYMALLOC"
6747$ IF use_pack_malloc THEN WC "#define PACK_MALLOC"
6748$ IF use_debugmalloc THEN WC "#define DEBUGGING_MSTATS"
414b89cc 6749$ IF ccname .EQS. "GCC" THEN WC "#define GNUC_ATTRIBUTE_CHECK"
570bb66e
JH
6750$ IF (Has_Dec_C_Sockets)
6751$ THEN
6752$ WC "#define VMS_DO_SOCKETS"
6753$ WC "#define DECCRTL_SOCKETS"
6754$ ELSE
6755$ IF Has_Socketshr THEN WC "#define VMS_DO_SOCKETS"
6756$ ENDIF
6757$! This is VMS-specific for now
6758$ WC "#''d_setenv' HAS_SETENV"
6759$ IF d_secintgenv THEN WC "#define SECURE_INTERNAL_GETENV"
6760$ IF d_alwdeftype THEN WC "#define ALWAYS_DEFTYPES"
6761$ IF use64bitint .OR. use64bitint .EQS. "define"
6762$ THEN
6763$ WC "#define USE_64_BIT_INT"
6764$ WC "#define USE_LONG_DOUBLE"
6765$ ENDIF
6766$ IF use64bitall .OR. use64bitall .EQS. "define" THEN -
6767 WC "#define USE_64_BIT_ALL"
6768$ IF be_case_sensitive THEN WC "#define VMS_WE_ARE_CASE_SENSITIVE"
3ffb755e 6769$ IF use_ieee_math THEN WC "#define USE_IEEE"
570bb66e
JH
6770$ IF d_herrno .EQS. "undef" THEN WC "#define NEED_AN_H_ERRNO"
6771$ WC "#define HAS_ENVGETENV"
6772$ WC "#define PERL_EXTERNAL_GLOB"
55315086
PP
6773$ IF archname .EQS. "VMS_VAX" .AND. -
6774 ccname .EQS. "DEC" .AND. -
6775 ccversion .LE. 50390006
6776$ THEN
6777$! Alas this does not help to build Fcntl
6778$! WC "#define PERL_IGNORE_FPUSIG SIGFPE"
6779$ ENDIF
f2610a60 6780$ IF kill_by_sigprc .EQS. "define" then WC "#define KILL_BY_SIGPRC"
4adb8845
CB
6781$ IF unlink_all_versions .OR. unlink_all_versions .EQS. "define" THEN -
6782 WC "#define UNLINK_ALL_VERSIONS"
570bb66e
JH
6783$ CLOSE CONFIG
6784$!
6785$ echo4 "Doing variable substitutions on .SH files..."
6786$ echo4 "Extracting config.h (with variable substitutions)"
6787$!
6788$! Now build the normal config.h
6789$ DEFINE/USER_MODE sys$output [-]config.main
7558ebc2 6790$ mcr []munchconfig 'config_sh' [-]config_h.sh
570bb66e
JH
6791$ ! Concatenate them together
6792$ copy [-]config.local,[-]config.main [-]config.h
6793$! Clean up
fcc434ad
PP
6794$ DELETE/NOLOG/NOCONFIRM [-]CONFIG.MAIN;*
6795$ DELETE/NOLOG/NOCONFIRM [-]CONFIG.LOCAL;*
6796$ DELETE/NOLOG/NOCONFIRM [-]CONFIG.FDL;*
570bb66e 6797$!
414b89cc 6798$ IF ccname .EQS. "DEC"
570bb66e
JH
6799$ THEN
6800$ DECC_REPLACE = "DECC=decc=1"
6801$ ELSE
7558ebc2
PP
6802$ DECC_REPLACE = "DECC="
6803$ ENDIF
414b89cc 6804$ IF ccname .EQS. "CXX"
7558ebc2
PP
6805$ THEN
6806$ DECCXX_REPLACE = "DECCXX=DECCXX=1"
6807$ ELSE
6808$ DECCXX_REPLACE = "DECCXX="
570bb66e 6809$ ENDIF
414b89cc 6810$ IF ccname .EQS. "GCC"
570bb66e
JH
6811$ THEN
6812$ GNUC_REPLACE = "GNUC=gnuc=1"
6813$ ELSE
6814$ GNUC_REPLACE = "GNUC="
6815$ ENDIF
6816$ IF Has_Dec_C_Sockets
6817$ THEN
6818$ SOCKET_REPLACE = "SOCKET=DECC_SOCKETS=1"
6819$ ELSE
6820$ IF Has_Socketshr
6821$ THEN
6822$ SOCKET_REPLACE = "SOCKET=SOCKETSHR_SOCKETS=1"
6823$ ELSE
6824$ SOCKET_REPLACE = "SOCKET="
6825$ ENDIF
6826$ ENDIF
a92ae878 6827$ IF use_threads
570bb66e
JH
6828$ THEN
6829$ IF (vms_ver .LES. "6.2")
6830$ THEN
6831$ THREAD_REPLACE = "THREAD=OLDTHREADED=1"
6832$ ELSE
6833$ THREAD_REPLACE = "THREAD=THREADED=1"
6834$ ENDIF
6835$ ELSE
6836$ THREAD_REPLACE = "THREAD="
6837$ ENDIF
6838$ IF mymalloc
6839$ THEN
6840$ MALLOC_REPLACE = "MALLOC=MALLOC=1"
6841$ ELSE
6842$ MALLOC_REPLACE = "MALLOC="
6843$ ENDIF
e0261ef8
CB
6844$ IF uselargefiles .OR. uselargefiles .EQS. "define"
6845$ THEN
cfcfe586
JM
6846$ IF usestdstat .or. usestdstat .eqs. "define"
6847$ THEN
6848$ LARGEFILE_REPLACE = "LARGEFILE=LARGEFILE=_USE_STD_STAT=1"
6849$ ELSE
96021e87 6850$ LARGEFILE_REPLACE = "LARGEFILE=LARGEFILE=_LARGEFILE=1"
cfcfe586 6851$ ENDIF
e0261ef8
CB
6852$ ELSE
6853$ LARGEFILE_REPLACE = "LARGEFILE="
6854$ ENDIF
b8df70f4
CB
6855$!
6856$! In order not to stress the tiny command buffer on pre-7.3-2 systems,
6857$! we put the following substitutions in a file and pass the file to
6858$! munchconfig.
6859$!
6860$ open/write CONFIG extra_subs.txt
6861$ WC := write CONFIG
6862$ WC "''DECC_REPLACE'"
6863$ WC "''DECCXX_REPLACE'"
6864$ WC "''ARCH_TYPE'"
6865$ WC "''GNUC_REPLACE'"
6866$ WC "''SOCKET_REPLACE'"
6867$ WC "''THREAD_REPLACE'"
6868$ WC "''C_Compiler_Replace'"
6869$ WC "''MALLOC_REPLACE'"
6870$ WC "''THREAD_UPCALLS'"
6871$ WC "''THREAD_KERNEL'"
6872$ WC "PV=''version'"
6873$ WC "FLAGS=FLAGS=''extra_flags'"
6874$ WC "''LARGEFILE_REPLACE'"
b8df70f4
CB
6875$ close CONFIG
6876$!
570bb66e 6877$ echo4 "Extracting ''defmakefile' (with variable substitutions)"
7558ebc2 6878$ DEFINE/USER_MODE sys$output 'UUmakefile'
b8df70f4 6879$ mcr []munchconfig 'config_sh' 'Makefile_SH' -f extra_subs.txt
7558ebc2
PP
6880$! Clean up after ourselves
6881$ DELETE/NOLOG/NOCONFIRM []munchconfig.exe;
b8df70f4 6882$ DELETE/NOLOG/NOCONFIRM []extra_subs.txt;
a3bd614a 6883$!
7558ebc2
PP
6884$ echo4 "Extracting make_ext.com (without variable substitutions)"
6885$ Create Sys$Disk:[-]make_ext.com
570bb66e 6886$ Deck/Dollar="$EndOfTpl$"
7558ebc2 6887$!++ make_ext.com
570bb66e
JH
6888$! NOTE: This file is extracted as part of the VMS configuration process.
6889$! Any changes made to it directly will be lost. If you need to make any
56aeb0ae 6890$! changes, please edit the template in Configure.Com instead.
db7bf729 6891$ mydefault = F$Environment("Default")
a3bd614a
PP
6892$! p1 - how to invoke miniperl (passed in from descrip.mms)
6893$ p1 = F$Edit(p1,"Upcase,Compress,Trim")
6894$ If F$Locate("MCR ",p1).eq.0 Then p1 = F$Extract(3,255,p1)
6895$ miniperl = "$" + F$Search(F$Parse(p1,".Exe"))
6896$! p2 - how to invoke local make utility (passed in from descrip.mms)
6897$ makeutil = p2
6898$ if f$type('p2') .nes. "" then makeutil = 'p2'
6899$! p3 - make target (passed in from descrip.mms)
6900$ targ = F$Edit(p3,"Lowercase")
6901$ sts = 1
6902$ extensions = ""
6903$ open/read CONFIG config.sh
6904$ find_ext_loop:
6905$ read/end=end_ext_loop CONFIG line
6906$ if (f$extract(0,12,line) .NES. "extensions='")
6907$ then goto find_ext_loop
6908$ else extensions = f$extract(12,f$length(line),line) - "'"
6909$ endif
6910$ end_ext_loop:
6911$ close CONFIG
6912$ extensions = f$edit(extensions,"TRIM,COMPRESS")
570bb66e
JH
6913$ i = 0
6914$ next_ext:
a3bd614a
PP
6915$ ext = f$element(i," ",extensions)
6916$ If ext .eqs. " " .or. ext .eqs. "" Then Goto done
570bb66e
JH
6917$ Define/User_mode Perl_Env_Tables CLISYM_LOCAL
6918$ miniperl
7558ebc2 6919$ deck
570bb66e
JH
6920 ($extdir = $ENV{'ext'}) =~ s/::/./g;
6921 $extdir =~ s#/#.#g;
6922 if ($extdir =~ /^vms/i) { $extdir =~ s/vms/.vms.ext/i; }
6923 else { $extdir = ".ext.$extdir"; }
6924 ($ENV{'extdir'} = "[$extdir]");
6925 ($ENV{'up'} = ('-') x ($extdir =~ tr/././));
7558ebc2 6926$ eod
570bb66e
JH
6927$ Set Default &extdir
6928$ redesc = 0
6929$ If F$Locate("clean",targ) .eqs. F$Length(targ)
6930$ Then
7558ebc2
PP
6931$ Write Sys$Output ""
6932$ Write Sys$Output " Making ''ext' (dynamic)"
570bb66e
JH
6933$ On Error Then Goto done
6934$ If F$Search("Descrip.MMS") .eqs. ""
6935$ Then
6936$ redesc = 1
6937$ Else
6938$ If F$CvTime(F$File("Descrip.MMS","rdt")) .lts. -
6939 F$CvTime(F$File("Makefile.PL","rdt")) Then redesc = 1
6940$ EndIf
6941$ Else
6942$ Write Sys$Output "''targ'ing ''ext' . . ."
6943$ On Error Then Continue
6944$ EndIf
6945$ If redesc Then -
69a33259 6946 miniperl "-I[''up'.lib]" Makefile.PL "INST_LIB=[''up'.lib]" "INST_ARCHLIB=[''up'.lib]" "PERL_CORE=1"
570bb66e
JH
6947$ makeutil 'targ'
6948$ i = i + 1
db7bf729 6949$ Set Def &mydefault
570bb66e
JH
6950$ Goto next_ext
6951$ done:
6952$ sts = $Status
98fa43f4 6953$ Set Def &mydefault
570bb66e 6954$ Exit sts
7558ebc2 6955$!-- make_ext.com
570bb66e
JH
6956$EndOfTpl$
6957$!
414b89cc
CB
6958$! Note that the /key qualifier to search, as in:
6959$! search README.* "=head"/key=(position=1)/window=0/output=extra.pods
6960$! is not supported on VMS V5.5-2, hence not used in extra_pods.com.
6961$!
6962$ echo4 "Extracting extra_pods.com (without variable substitutions)"
6963$ Create Sys$Disk:[-]extra_pods.com
6964$ Deck/Dollar="$EOExtra_Pods$"
6965$!++ extra_pods.com
6966$! NOTE: This file is extracted as part of the VMS configuration process.
6967$! Any changes made to it directly will be lost. If you need to make any
6968$! changes, please edit the template in Configure.Com instead.
6969$! Use FORCE if you've just podified a README.* file on VMS.
6970$ if f$search("extra.pods") .eqs. "" .or. P1 .eqs. "FORCE" then -
6971 search README.* "=head"/window=0/output=extra.pods
6972$ open/read/error=extra_close EXTRA extra.pods
6973$extra_loop:
6974$ read/error=extra_close/END_OF_FILE=extra_close EXTRA file
1f74f634 6975$ file_type = f$edit(f$parse(file,,,"TYPE",),"LOWERCASE") - "."
414b89cc
CB
6976$ if file_type .nes. "VMS" .and. file_type .nes. "vms"
6977$ then
6978$ pod_file = "[.pod]perl''file_type'.pod"
6979$ file = file - "''f$parse(file,,,"VERSION",)'"
6980$ if p1 .eqs. "CLEAN"
6981$ then if f$search(pod_file) .nes. "" then delete/log 'pod_file';*
6982$ else
6983$ do_copy := false
6984$ if f$search(pod_file) .eqs. ""
6985$ then do_copy := true
6986$ else
6987$ file_rdt = f$cvtime(f$file_attributes(file,"RDT"))
6988$ pod_file_rdt = f$cvtime(f$file_attributes(pod_file,"RDT"))
6989$ if file_rdt .GTS. pod_file_rdt then do_copy := true
6990$ endif
1f74f634
CB
6991$ ! wacky method to preserve case on ODS-5 even when parse style is traditional
6992$ if do_copy then mcr sys$disk:[]miniperl.exe -e "exit 0+$^E unless File::Copy::rmscopy(q{''file'}, q{''pod_file'});"
414b89cc
CB
6993$ endif
6994$ endif
6995$ goto extra_loop
6996$extra_close:
6997$ close EXTRA
6998$ if p1 .eqs. "CLEAN" .and. f$search("extra.pods;-1") .nes. "" then -
6999 purge/nolog extra.pods
7000$!-- extra_pods.com
7001$EOExtra_Pods$
97abc6ad 7002$!
146174a9 7003$! Warn of dangerous symbols or logical names
a4521476 7004$!
146174a9
CB
7005$Bad_environment: SUBROUTINE
7006$ Bad_env = ""
7007$ IF p2 .eqs. "SYMBOL"
7008$ THEN
7558ebc2 7009$ IF f$type('p1') .nes. "" THEN Bad_env := SYMBOL
146174a9
CB
7010$ ELSE
7011$ IF f$trnlnm(p1) .nes. "" THEN Bad_env := LOGICAL
7012$ ENDIF
7013$ IF Bad_env .eqs. "SYMBOL" .or. Bad_env .eqs. "LOGICAL"
a4521476
PP
7014$ THEN
7015$ IF f$search("config.msg") .nes. ""
7016$ THEN
7017$ OPEN/APPEND CONFIG config.msg
7018$ ELSE
7019$ OPEN/WRITE CONFIG config.msg
7020$ ENDIF
146174a9
CB
7021$ IF Bad_env .eqs. "SYMBOL"
7022$ THEN
7023$ WRITE CONFIG ""
7024$ WRITE CONFIG "Symbol name ''p1' found in environment as " + &p1
7025$ WRITE CONFIG " delete before building ''package' via:"
7026$ WRITE CONFIG " $ DELETE/SYMBOL/GLOBAL ''p1'"
7027$ IF f$locate("""",&p1) .ge. f$length(&p1)
7028$ THEN
7558ebc2 7029$ WRITE CONFIG " after building, testing, and installing ''package'"
146174a9
CB
7030$ WRITE CONFIG " restore the symbol with:"
7031$ WRITE CONFIG " $ ''p1' == """ + &p1 + """"
7032$ ENDIF
7033$ ENDIF
7034$ IF Bad_env .eqs. "LOGICAL"
7035$ THEN
7036$ WRITE CONFIG ""
7037$ WRITE CONFIG "Logical name ''p1' found in environment as " + f$trnlnm(p1)
7038$ WRITE CONFIG " deassign before building ''package'"
7039$ ENDIF
a4521476 7040$ CLOSE CONFIG
146174a9 7041$ Bad_env = ""
a4521476
PP
7042$ ENDIF
7043$ EXIT
146174a9 7044$ ENDSUBROUTINE ! Bad_environment
a4521476 7045$ echo ""
570bb66e 7046$ echo4 "Checking for dangerous pre-existing global symbols and logical names."
b3b333bf 7047$ CALL Bad_environment "COMP"
139df077
CB
7048$ CALL Bad_environment "EXT"
7049$ CALL Bad_environment "FOO"
146174a9 7050$ CALL Bad_environment "LIB"
139df077
CB
7051$ CALL Bad_environment "LIST"
7052$ CALL Bad_environment "MIME"
7053$ CALL Bad_environment "POSIX"
7054$ CALL Bad_environment "SYS"
146174a9 7055$ CALL Bad_environment "T"
139df077
CB
7056$ CALL Bad_environment "THREAD"
7057$ CALL Bad_environment "THREADS"
7058$ CALL Bad_environment "TIME"
7059$ CALL Bad_environment "TMP"
7060$ CALL Bad_environment "UNICODE"
7061$ CALL Bad_environment "UTIL"
146174a9 7062$ CALL Bad_environment "TEST" "SYMBOL"
a4521476
PP
7063$ IF f$search("config.msg") .eqs. "" THEN echo "OK."
7064$!
97abc6ad
HM
7065$! %Config-I-VMS, write perl_setup.com here
7066$!
86fced14
CB
7067$ IF (.NOT.perl_symbol)
7068$ THEN
7069$ file_2_find = "[-]''packageup'.cld"
7070$ echo ""
570bb66e 7071$ echo4 "The perl.cld file is now being written..."
86fced14 7072$ OPEN/WRITE CONFIG 'file_2_find'
c645ec3f 7073$ ext = ".exe"
affad296
CB
7074$ IF (sharedperl .AND. F$EXTRACT(0,7,archname) .EQS. "VMS_AXP") THEN ext := .AXE
7075$ IF (sharedperl .AND. F$EXTRACT(0,8,archname) .EQS. "VMS_IA64") THEN ext := .IXE
86fced14
CB
7076$ IF (use_vmsdebug_perl)
7077$ THEN
7078$ WRITE CONFIG "define verb dbgperl"
570bb66e 7079$ WRITE CONFIG F$FAO("!_!AS","image ''vms_prefix':[000000]dbgperl''ext'")
86fced14
CB
7080$ WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
7081$ WRITE CONFIG ""
7082$ WRITE CONFIG "define verb perl"
570bb66e 7083$ WRITE CONFIG F$FAO("!_!AS","image ''vms_prefix':[000000]ndbgPerl''ext'")
86fced14
CB
7084$ WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
7085$ ELSE
7086$ WRITE CONFIG "define verb perl"
570bb66e 7087$ WRITE CONFIG F$FAO("!_!AS","image ''vms_prefix':[000000]perl''ext'")
86fced14
CB
7088$ WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
7089$ ENDIF
7090$ CLOSE CONFIG
7091$ ENDIF ! (.NOT.perl_symbol)
97abc6ad 7092$ echo ""
570bb66e 7093$ echo4 "The perl_setup.com file is now being written..."
a3ef2c6f 7094$ file_2_find = "[-]perl_setup.com"
fcc434ad
PP
7095$!
7096$! Folks are likely to want to edit perl_setup.com.
7097$! STMLF RFM plays nicer with ported editors than does VFC.
7098$!
7099$ CREATE [-]CONFIG.FDL
7100$ DECK
7101RECORD
7102 FORMAT STREAM_LF
7103$ EOD
7104$ CREATE /FDL=[-]CONFIG.FDL 'file_2_find'
7105$ OPEN/APPEND CONFIG 'file_2_find'
7106$ DELETE/NOLOG/NOCONFIRM [-]CONFIG.FDL;
97abc6ad
HM
7107$ WRITE CONFIG "$!"
7108$ WRITE CONFIG "$! Perl_Setup.com ''cf_time'"
7109$ IF cf_email.NES.perladmin
7110$ THEN
7111$ WRITE CONFIG "$! perl configured by ''cf_email'"
7112$ ELSE
7113$ WRITE CONFIG "$! This perl configured & administered by ''perladmin'"
7114$ ENDIF
7115$ WRITE CONFIG "$!"
96021e87
JM
7116$! HP hack to make distributing binaries easier
7117$!----------------------------------------------
7118$ pcsi_producer = f$trnlnm("PCSI_PRODUCER")
7119$ if pcsi_producer .eqs. ""
7120$ then
96021e87
JM
7121$ WRITE CONFIG "$ define/translation=concealed ''vms_prefix' ''prefix'"
7122$ else
7123$ WRITE CONFIG "$ myproc = f$environment(""PROCEDURE"")"
7124$ WRITE CONFIG "$ myroot_dev = f$parse(myproc,,,""DEVICE"",""NO_CONCEAL"")"
7125$ WRITE CONFIG "$ myroot_dir = f$parse(myproc,,,""DIRECTORY"",""NO_CONCEAL"")"
7126$ WRITE CONFIG "$ myroot_dir = myroot_dir - ""][000000."" - ""><000000."""
7127$ WRITE CONFIG "$ myroot_dir = myroot_dir - ""][000000]"" - ""><000000>"""
7128$ WRITE CONFIG "$ myroot_dir = myroot_dir - ""]["" - ""><"""
7129$ WRITE CONFIG "$ myroot_dir = myroot_dir - "".]"" - "".>"" - ""["" - ""]"" - ""<"" - "">"""
7130$ WRITE CONFIG "$ if f$trnlnm(""HP_BUILD_PERL_BIN_KIT"",""LNM$PROCESS_TABLE"") .EQS. """""
7131$ WRITE CONFIG "$ then"
7132$ WRITE CONFIG "$ define/translation=concealed ''vms_prefix' 'myroot_dev'['myroot_dir'.]"
7133$ WRITE CONFIG "$ endif"
7134$ endif
86fced14 7135$ WRITE CONFIG "$ ext = "".exe"""
570bb66e 7136$ IF sharedperl
86fced14 7137$ THEN
86da1428
CB
7138$ WRITE CONFIG "$ if f$getsyi(""ARCH_TYPE"") .eq. 2 then ext = "".AXE"""
7139$ WRITE CONFIG "$ if f$getsyi(""ARCH_TYPE"") .eq. 3 then ext = "".IXE"""
86fced14
CB
7140$ ENDIF
7141$ IF (perl_symbol)
7142$ THEN
972e9305 7143$ perl_setup_perl = "'" + "'perl'" ! triple quoted foreign command symbol
86fced14
CB
7144$ IF (use_vmsdebug_perl)
7145$ THEN
972e9305
PP
7146$ WRITE CONFIG "$ dbgperl :== $''vms_prefix':[000000]dbgperl'ext'"
7147$ WRITE CONFIG "$ perl :== $''vms_prefix':[000000]ndbgperl'ext'"
7148$ WRITE CONFIG "$ define dbgperlshr ''vms_prefix':[000000]dbgperlshr'ext'"
86fced14 7149$ ELSE
570bb66e 7150$ WRITE CONFIG "$ perl :== $''vms_prefix':[000000]Perl'ext'"
972e9305 7151$ WRITE CONFIG "$ define perlshr ''vms_prefix':[000000]perlshr'ext'"
86fced14
CB
7152$ ENDIF
7153$ ELSE ! .NOT.perl_symbol
972e9305 7154$ perl_setup_perl = "perl" ! command verb
86fced14
CB
7155$ IF (use_vmsdebug_perl)
7156$ THEN
972e9305 7157$ WRITE CONFIG "$ define dbgperlshr ''vms_prefix':[000000]dbgperlshr'ext'"
86fced14 7158$ ELSE
972e9305 7159$ WRITE CONFIG "$ define perlshr ''vms_prefix':[000000]perlshr'ext'"
86fced14
CB
7160$ ENDIF
7161$ IF perl_verb .EQS. "PROCESS"
7162$ THEN
570bb66e 7163$ WRITE CONFIG "$ set command ''vms_prefix':[000000]''packageup'.CLD"
86fced14
CB
7164$ ENDIF
7165$ ENDIF ! perl_symbol
3eeba6fb 7166$!
97abc6ad
HM
7167$ IF (tzneedset)
7168$ THEN
7169$ WRITE CONFIG "$ define SYS$TIMEZONE_DIFFERENTIAL ''tzd'"
7170$ ELSE !leave in but commented out (in case setting was from perl :-)
7171$ WRITE CONFIG "$! define SYS$TIMEZONE_DIFFERENTIAL ''tzd'"
7172$ ENDIF
7173$ WRITE CONFIG "$!"
9ee2021e 7174$ WRITE CONFIG "$! Symbols for Perl-based utility programs:"
97abc6ad 7175$ WRITE CONFIG "$!"
972e9305 7176$ WRITE CONFIG "$ c2ph == """ + perl_setup_perl + " ''vms_prefix':[utils]c2ph.com"""
9ee2021e
CB
7177$ WRITE CONFIG "$ config_data== """ + perl_setup_perl + " ''vms_prefix':[utils]config_data.com"""
7178$ WRITE CONFIG "$ corelist == """ + perl_setup_perl + " ''vms_prefix':[utils]corelist.com"""
972e9305 7179$ WRITE CONFIG "$ cpan == """ + perl_setup_perl + " ''vms_prefix':[utils]cpan.com"""
9ee2021e
CB
7180$ WRITE CONFIG "$ cpan2dist == """ + perl_setup_perl + " ''vms_prefix':[utils]cpan2dist.com"""
7181$! FIXME: "-" is an operator and illegal in a symbol name -- cpanp-run-perl can't work
7182$!$ WRITE CONFIG "$ cpanp-run-perl == """ + perl_setup_perl + " ''vms_prefix':[utils]cpanp-run-perl.com"""
7183$ WRITE CONFIG "$ cpanp == """ + perl_setup_perl + " ''vms_prefix':[utils]cpanp.com"""
972e9305
PP
7184$ IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions)
7185$ THEN
7186$ WRITE CONFIG "$ dprofpp == """ + perl_setup_perl + " ''vms_prefix':[utils]dprofpp.com"""
7187$ ENDIF
7188$ WRITE CONFIG "$ enc2xs == """ + perl_setup_perl + " ''vms_prefix':[utils]enc2xs.com"""
88be34b6 7189$ WRITE CONFIG "$ find2perl == """ + perl_setup_perl + " ''vms_prefix':[utils]find2perl.com"""
972e9305
PP
7190$ WRITE CONFIG "$ h2ph == """ + perl_setup_perl + " ''vms_prefix':[utils]h2ph.com"""
7191$ WRITE CONFIG "$ h2xs == """ + perl_setup_perl + " ''vms_prefix':[utils]h2xs.com"""
88be34b6 7192$ WRITE CONFIG "$ instmodsh == """ + perl_setup_perl + " ''vms_prefix':[utils]instmodsh.com"""
972e9305 7193$ WRITE CONFIG "$ libnetcfg == """ + perl_setup_perl + " ''vms_prefix':[utils]libnetcfg.com"""
e8e09534 7194$ WRITE CONFIG "$ perlbug == """ + perl_setup_perl + " ''vms_prefix':[utils]perlbug.com"""
e8e09534 7195$ WRITE CONFIG "$ perldoc == """ + perl_setup_perl + " ''vms_prefix':[utils]perldoc.com """"-t"""""""
972e9305
PP
7196$ WRITE CONFIG "$ perlivp == """ + perl_setup_perl + " ''vms_prefix':[utils]perlivp.com"""
7197$ WRITE CONFIG "$ piconv == """ + perl_setup_perl + " ''vms_prefix':[utils]piconv.com"""
7198$ WRITE CONFIG "$ pl2pm == """ + perl_setup_perl + " ''vms_prefix':[utils]pl2pm.com"""
e8e09534
PP
7199$ WRITE CONFIG "$ pod2html == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2html.com"""
7200$ WRITE CONFIG "$ pod2latex == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2latex.com"""
7201$ WRITE CONFIG "$ pod2text == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2text.com"""
7202$ WRITE CONFIG "$!pod2man == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2man.com"""
972e9305
PP
7203$ WRITE CONFIG "$ pod2usage == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2usage.com"""
7204$ WRITE CONFIG "$ podchecker == """ + perl_setup_perl + " ''vms_prefix':[utils]podchecker.com"""
7205$ WRITE CONFIG "$ podselect == """ + perl_setup_perl + " ''vms_prefix':[utils]podselect.com"""
20997843 7206$ WRITE CONFIG "$ prove == """ + perl_setup_perl + " ''vms_prefix':[utils]prove.com"""
972e9305
PP
7207$ WRITE CONFIG "$ psed == """ + perl_setup_perl + " ''vms_prefix':[utils]psed.com"""
7208$ WRITE CONFIG "$ pstruct == """ + perl_setup_perl + " ''vms_prefix':[utils]pstruct.com"""
7209$ WRITE CONFIG "$ s2p == """ + perl_setup_perl + " ''vms_prefix':[utils]s2p.com"""
9ee2021e
CB
7210$ WRITE CONFIG "$ ptar == """ + perl_setup_perl + " ''vms_prefix':[utils]ptar.com"""
7211$ WRITE CONFIG "$ ptardiff == """ + perl_setup_perl + " ''vms_prefix':[utils]ptardiff.com"""
7212$ WRITE CONFIG "$ shasum == """ + perl_setup_perl + " ''vms_prefix':[utils]shasum.com"""
972e9305
PP
7213$ WRITE CONFIG "$ splain == """ + perl_setup_perl + " ''vms_prefix':[utils]splain.com"""
7214$ WRITE CONFIG "$ xsubpp == """ + perl_setup_perl + " ''vms_prefix':[utils]xsubpp.com"""
97abc6ad
HM
7215$ CLOSE CONFIG
7216$!
7217$ echo ""
570bb66e
JH
7218$ echo "The file can be found at:"
7219$ echo4 " ''F$SEARCH(file_2_find)'"
7220$ echo "Add that file (or an @ call to it) to your [SY]LOGIN.COM"
7221$ echo "when you are satisfied with a successful compilation,"
7222$ echo "testing, and installation of your perl."
97abc6ad 7223$ echo ""
86fced14
CB
7224$ IF ((.NOT.perl_symbol) .AND. (perl_verb .EQS. "DCLTABLES"))
7225$ THEN
7226$ file_2_find = "[-]''packageup'_install.com"
7558ebc2 7227$ OPEN/WRITE CONFIG 'file_2_find'
86fced14
CB
7228$ WRITE CONFIG "$ set command perl /table=sys$common:[syslib]dcltables.exe -"
7229$ WRITE CONFIG " /output=sys$common:[syslib]dcltables.exe"
7230$ WRITE CONFIG "$ install replace sys$common:[syslib]dcltables.exe"
7231$ CLOSE CONFIG
7232$ echo4 ""
570bb66e
JH
7233$ echo4 "In order to install the ''packageup' verb into DCLTABLES run:"
7234$ echo4 " @ ''F$SEARCH(file_2_find)'"
7235$ echo4 "after a successful build, test, and install. Do so with CMKRNL privilege."
86fced14
CB
7236$ echo4 ""
7237$ ENDIF
97abc6ad
HM
7238$!
7239$!figure out where we "are" by parsing 'vms_default_directory_name'
7240$!
7241$ set_def_command = ""
7242$ dflt = F$ENVIRONMENT("DEFAULT") - ".UU]"
7243$ tmp = vms_default_directory_name - dflt - "]"
7244$ i = 0
7245$ IF tmp .EQS. "" THEN GOTO Beyond_set_def_loop
7246$Set_def_loop:
7247$ tmp1 = F$ELEMENT(i,".",tmp)
7248$ IF tmp1 .EQS. "." THEN GOTO Beyond_set_def_loop
7249$ IF i .EQ. 0
7250$ THEN set_def_command = "set default [-"
7251$ ELSE set_def_command = set_def_command + "-"
7252$ ENDIF
7253$ i = i + 1
7254$ GOTO Set_def_loop
7255$Beyond_set_def_loop:
7256$ IF set_def_command.NES.""
7257$ THEN
7258$ set_def_command = set_def_command - "-" + "]"
7259$ echo4 ""
7260$ echo4 "In order to build ''package' you must now issue the commands:"
7261$ echo4 ""
7262$ echo4 " ''set_def_command'"
7263$ ELSE
7264$ echo4 ""
7265$ echo4 "In order to build ''package' you must now issue the command:"
7266$ echo4 ""
7267$ ENDIF
7268$ echo4 " ''make'''makefile'", macros
7269$ echo4 ""
7270$!
a4521476
PP
7271$ IF ( F$SEARCH("config.msg").NES."" )
7272$ THEN
139df077
CB
7273$ echo4 "Hmm. I also noted the following information while running:"
7274$ echo4 ""
7275$ TYPE/OUTPUT=SYS$ERROR: config.msg
a4521476
PP
7276$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) config.msg
7277$ DELETE/NOLOG/NOCONFIRM config.msg;
7278$ ENDIF
7279$!
97abc6ad 7280$Clean_up:
17d0565f 7281$ SET NOON
97abc6ad
HM
7282$ IF (silent)
7283$ THEN
17d0565f 7284$ CLOSE/NOLOG STDOUT
97abc6ad 7285$ DEASSIGN SYS$OUTPUT
97abc6ad 7286$ ENDIF
17d0565f 7287$ CLOSE/NOLOG CONFIG
414b89cc 7288$ IF F$GETJPI("","FILCNT").GT.vms_filcnt
97abc6ad
HM
7289$ THEN WRITE SYS$ERROR "%Config-W-VMS, WARNING: There is a file still open"
7290$ ENDIF
7291$ dflt = F$ENVIRONMENT("DEFAULT")
7292$ IF F$LOCATE("UU]",dflt).EQS.(F$LENGTH(dflt)-3)
7293$ THEN
7294$ IF ( F$SEARCH("[]*.*").NES."" ) THEN DELETE/NOLOG/NOCONFIRM []*.*;*
7295$ SET DEFAULT [-]
7296$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) UU.DIR
7297$ DELETE/NOLOG/NOCONFIRM UU.DIR;
7298$ ENDIF
7299$ SET DEFAULT 'vms_default_directory_name' !be kind rewind
97abc6ad
HM
7300$ EXIT
7301$!: End of Configure