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