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