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