X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=configure.com;h=c1c2a2c428d48fff7d8dd976142b283f54305d3f;hb=5b3e00df85f0acd4faa55a140aa762a15b19dca3;hp=99a8335857546ba5af1108bbc59697c5779c86bd;hpb=94928b1262dec762a53d320598fa3ccdb8154f26;p=p5sagit%2Fp5-mst-13.2.git diff --git a/configure.com b/configure.com index 99a8335..c1c2a2c 100644 --- a/configure.com +++ b/configure.com @@ -1,4 +1,6 @@ -$ sav_ver = 'F$VERIFY(0) +$! OpenVMS configuration procedure for Perl -- do not attempt to run under DOS +$ sav_ver = 'F$VERIFY(0)' +$ on control_y then goto clean_up $! SET VERIFY $! $! For example, if you unpacked perl into: [USER.PERL-5n...] then you will @@ -30,8 +32,6 @@ $! with much valuable help from Charles Bailey & $! the whole VMSPerl crew. $! Extended and messed about with by Dan Sugalski $! -$ sav_ver = F$VERIFY(0) -$! $! VMS-isms we will need: $ echo = "write sys$output " $ cat = "type" @@ -42,7 +42,7 @@ $ ans = "" $ macros = "" $ extra_flags = "" $ user_c_flags = "" -$ use_ieee_math = "n" +$ use_ieee_math = "y" $ be_case_sensitive = "n" $ use_vmsdebug_perl = "n" $ use64bitall = "n" @@ -53,10 +53,20 @@ $ use_two_pot_malloc = "N" $ use_pack_malloc = "N" $ use_debugmalloc = "N" $ ccflags = "" +$ static_ext = "" $ vms_default_directory_name = F$ENVIRONMENT("DEFAULT") $ max_allowed_dir_depth = 3 ! e.g. [A.B.PERLxxx] not [A.B.C.PERLxxx] $! max_allowed_dir_depth = 2 ! e.g. [A.PERLxxx] not [A.B.PERLxxx] $! +$! Sebastian Bazley's request: close the CONFIG handle with /NOLOG +$! qualifier "just in case" (configure.com is re @ed in a bad state). +$! This construct was tested to be not a problem as far back as +$! VMS V5.5-2, hopefully earlier versions are OK as well. +$! +$ CLOSE/NOLOG CONFIG +$! +$! Now keep track of open files +$! $ vms_filcnt = F$GETJPI ("","FILCNT") $! $!: compute my invocation name @@ -125,9 +135,7 @@ $ silent="" $ extractsh="" $ override="" $ knowitall="" -$ Using_Dec_C = "n" -$ Using_Gnu_C = "n" -$ using_cxx = "n" +$ ccname="VAX" $ Dec_C_Version = "" $ cxxversion = "" $ use_threads = "F" @@ -254,18 +262,18 @@ $ P'i' = P'i' - "D" $ IF (F$LOCATE("=",P'i') .EQ. F$LENGTH(P'i')) $ THEN $ tmp = P'i' + "=""define""" -$ 'tmp +$ 'tmp' $ DELETE/SYMBOL tmp $ ELSE $ IF (F$LOCATE("=",P'i') .EQ. (F$LENGTH(P'i') - 1)) $ THEN $ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE") -$ echo "''me': use '-Usymbol=val' not '-Dsymbol='." +$ echo "''me': use ""-Usymbol=val"" not ""-Dsymbol=""." $ echo "''me': ignoring -D",P'i' $ ELSE $ tmp = F$EXTRACT(0,F$LOCATE("=",P'i'),P'i') $ tmp = tmp + "=""" + F$EXTRACT(F$LOCATE("=",P'i')+1,F$LENGTH(P'i'),P'i') + """" -$ 'tmp +$ 'tmp' $ DELETE/SYMBOL tmp $ ENDIF $ ENDIF @@ -277,17 +285,17 @@ $ P'i' = P'i' - "U" $ IF (F$LOCATE("=",P'i') .EQ. F$LENGTH(P'i')) $ THEN $ tmp = P'i' + "=""""" -$ 'tmp +$ 'tmp' $ DELETE/SYMBOL tmp $ ELSE $ IF (F$LOCATE("=",P'i') .LT. (F$LENGTH(P'i') - 1)) $ THEN $ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE") -$ echo "''me': use '-Dsymbol=val' not '-Usymbol=val'." +$ echo "''me': use ""-Dsymbol=val"" not ""-Usymbol=val""." $ echo "''me': ignoring -U",P'i' $ ELSE $ tmp = P'i' + "=""undef""" -$ 'tmp +$ 'tmp' $ DELETE/SYMBOL tmp $ ENDIF $ ENDIF @@ -315,9 +323,10 @@ $! $ IF (error) $ THEN $ me = F$PARSE(me,,,"DIRECTORY")+ F$PARSE(me,,,"NAME") -$ echo "Usage: @''me' [-dehmrEKOSV] [-fconfig.sh] [-Dsymbol] [-Dsymbol=value]" +$ echo "Usage: @''me' [-dehmr""EKOSV""] [-fconfig.sh] [""-Dsymbol""] [""-Dsymbol=value""]" $ echo " [-Usymbol] [-Usymbol=]" -$ TYPE SYS$INPUT +$ TYPE SYS$INPUT: +$ DECK "-d" : use defaults for all answers. "-e" : go on without questioning past the production of config.sh. * "-f" : specify an alternate default configuration file. @@ -336,6 +345,7 @@ $ TYPE SYS$INPUT -"Usymbol" symbol gets the value 'undef' -"Usymbol=" symbol gets completely empty -V : print version number and exit (with a zero status). +$ EOD $ echo "%Config-I-VMS, lower case switches must be enclosed" $ echo "-Config-I-VMS, in double quotation marks, e.g.:" $ echo "-Config-I-VMS, @Configure ""-des""" @@ -350,7 +360,8 @@ $! $Shut_up: $ IF F$Mode() .eqs. "BATCH" $ THEN -$ STDOUT = F$GetQuI("DISPLAY_JOB","LOG_SPECIFICATION",,"THIS_JOB") +$ STDOUT = F$PARSE(F$GETQUI("DISPLAY_ENTRY", "JOB_NAME"), - + F$GETQUI("DISPLAY_ENTRY", "LOG_SPECIFICATION"), ".LOG") $ WRITE SYS$OUTPUT "Warning: Executing in batch mode. To avoid file locking conflicts," $ WRITE SYS$OUTPUT "output intended for SYS$OUTPUT will be sent to a new version" $ WRITE SYS$OUTPUT STDOUT @@ -417,17 +428,23 @@ $ miss_list = "" $ GOTO Beyond_manifest $ ENDIF $ ELSE -$! MANIFEST. has been found and we have set def'ed there - -$! time to bail out before it's too late. -$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE")) -$ IF (tmp .GES. "7.2") .AND. (F$GETSYI("HW_MODEL") .GE. 1024) THEN GOTO Beyond_depth_check -$ IF (F$ELEMENT(max_allowed_dir_depth,".",F$ENVIRONMENT("Default")).nes.".") +$! MANIFEST. has been found and we have set def'ed there. +$! Time to bail out before it's too late, i.e. too deep. +$! Depth check is unnecessary on Alpha VMS V7.2++ (even for ODS-2). +$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE")) +$ IF (tmp .GES. "7.2") .AND. (F$GETSYI("HW_MODEL") .GE. 1024) THEN GOTO Beyond_depth_check +$! Depth check also unnecessary on ODS 5 (or later) file systems. +$ tmp = F$INTEGER(F$GETDVI(F$ENVIRONMENT("DEFAULT"),"ACPTYPE") - "F11V") +$ IF (tmp .GE. 5) THEN GOTO Beyond_depth_check +$ IF (F$ELEMENT(max_allowed_dir_depth,".",F$ENVIRONMENT("DEFAULT")).nes.".") $ THEN $ TYPE SYS$INPUT: +$ DECK %Config-E-VMS, ERROR: Sorry! It apears as though your perl build sub-directory is already too deep into the VMS file system. Please try moving stuff into a shallower directory (or altering the "max_allowed_dir_depth" parameter). +$ EOD $ echo4 "ABORTING..." $ SET DEFAULT 'vms_default_directory_name' !be kind rewind $ STOP @@ -490,6 +507,11 @@ $ ENDIF $! $ dirname = F$EXTRACT(0,F$LOCATE("]",file_2_find),file_2_find) + "]" $ file_2_find = file_2_find - dirname +$! +$! may not need double dot check on ODS-5 volumes +$ found = F$SEARCH(dirname + file_2_find) +$ IF found .NES. "" THEN GOTO Read_loop_manifest +$! $ dots = 0 $Dot_loop: $ dot_ele = F$ELEMENT(dots,".",file_2_find) @@ -543,6 +565,8 @@ $ ENDIF $ IF ((miss_list .NES. "").OR.(manifestfound .EQS. "")) $ THEN $ TYPE SYS$INPUT: +$ DECK + THIS PACKAGE SEEMS TO BE INCOMPLETE. @@ -551,6 +575,7 @@ distinct possibility that your kit is damaged, by typing 'y'es. If you do, don't blame me if something goes wrong. I advise you to type 'n'o and contact the author (dan@sidhe.org) +$ EOD $ READ SYS$COMMAND/PROMPT="Continue? [n] " ans $ IF ans $ THEN @@ -569,36 +594,91 @@ $! after finding MANIFEST (see above) $!: Configure runs within the UU subdirectory $! $!: compute the number of columns on the terminal for proper question formatting -$! (sfn, will assume 80-ish) +$ IF F$MODE() .EQS. "BATCH" +$! else it winds up being 512 in batch +$ THEN COLUMNS = 80 +$ ELSE COLUMNS = F$GETDVI("SYS$OUTPUT","DEVBUFSIZ") +$ ENDIF +$! "-des" sets SYS$OUTPUT to NL: with a DEVBUFSIZ too large (512 again) +$ IF COLUMNS .GT. 210 THEN COLUMNS = 80 +$! not sure if this would actually be needed - it hopefully will not hurt +$ IF COLUMNS .LT. 40 THEN COLUMNS = 40 $! $!: set up the echo used in my read !sfn $!: now set up to do reads with possible shell escape and default assignment !sfn $ GOTO Beyond_myread $! +$! The sub_rp splitting is intended to handle long symbols such as the dflt for +$! extensions. +$! $myread: $ ans = "" -$ If (fastread) -$ Then -$ echo4 "''rp'" -$ Else +$ len_rp = F$LENGTH(rp) $ If (.NOT. silent) Then echo "" -$ READ SYS$COMMAND/PROMPT="''rp'" ans +$ IF len_rp .GT. 210 +$ THEN +$ i_rp = 0 +$ rp_loop: +$ sub_rp = F$EXTRACT(i_rp,COLUMNS,rp) +$ i_rp = i_rp + COLUMNS +$ if i_rp .LT. len_rp THEN echo4 "''sub_rp'" +$ IF i_rp .LT. len_rp THEN GOTO rp_loop +$ ELSE +$ sub_rp = rp +$ ENDIF +$ if (fastread) +$ then +$ echo4 "''sub_rp'" +$ else +$ READ SYS$COMMAND/PROMPT="''sub_rp'" ans +$ endif $ IF (ans .EQS. "&-d") $ THEN $ echo4 "(OK, I will run with -d after this question.)" -$ IF (.NOT. silent) THEN echo "" -$ READ SYS$COMMAND/PROMPT="''rp'" ans -$ fastread := yes +$ echo "" +$ deferred_fastread =1 +$ goto myread $ ENDIF $ IF (ans .EQS. "&-s") $ THEN $ echo4 "(OK, I will run with -s after this question.)" $ echo "" -$ READ SYS$COMMAND/PROMPT="''rp'" ans +$ deferred_silent = 1 +$ goto myread +$ ENDIF +$ if (bool_dflt .nes. "") +$ then +$ if (ans .eqs. "") then ans = bool_dflt +$ ans = f$extract(0,1,f$edit(ans,"collapse,upcase")) +$ if (ans .eqs. "Y" .or. ans .eqs. "1" .or. ans .eqs. "T") +$ then +$ ans = "Y" +$ else +$ if (ans .eqs. "N" .or. ans .eqs. "0" .or. ans .eqs. "F") +$ then +$ ans = "N" +$ else +$ echo4 "Input not understood please answer 'Yes' or 'No'" +$ goto myread +$ endif +$ endif +$ bool_dflt = "" +$ else +$ ans = f$edit(ans,"trim,compress") +$ if (ans .eqs. "") then ans = dflt +$ if (f$edit(ans,"upcase") .eqs. "NONE") then ans = "" +$ endif +$ if f$type(deferred_silent) .nes. "" +$ then $ silent := true $ GOSUB Shut_up +$ delete/symbol deferred_silent $ ENDIF -$ Endif +$ if f$type(deferred_fastread) .nes. "" +$ then +$ fastread = 1 +$ delete/symbol deferred_fastread +$ endif $ RETURN $! $Beyond_myread: @@ -622,7 +702,7 @@ $ IF F$TYPE(usedevel) .EQS. "" THEN usedevel := n $ patchlevel_h = F$SEARCH("[-]patchlevel.h") $ IF (patchlevel_h.NES."") $ THEN -$ SEARCH 'patchlevel_h "define","PERL_VERSION","epoch"/match=and/out=[]ver.out +$ SEARCH 'patchlevel_h' "define","PERL_VERSION","epoch"/match=and/out=[]ver.out $ IF .NOT. usedevel .AND. usedevel .NES. "define" $ THEN $ OPEN/READ CONFIG []ver.out @@ -636,6 +716,7 @@ $ IF tmp .NE. 0 $ THEN $ echo4 "patchlevel is " + F$STRING(xpatchlevel) $ cat4 SYS$INPUT: +$ DECK *** WHOA THERE!!! *** This is an UNSTABLE DEVELOPMENT release. @@ -649,11 +730,14 @@ $ cat4 SYS$INPUT: It is most seriously suggested that you do not continue any further unless you want to help in developing and debugging Perl. -$ dflt="n" -$ rp="Do you really want to continue? [''dflt'] " -$ IF (fastread) THEN fastread := FALSE +$ EOD +$ bool_dflt="n" +$ rp="Do you really want to continue? [''bool_dflt'] " +$ fastread_save = fastread +$ fastread := FALSE $ GOSUB myread -$ IF ans .EQS. "" THEN ans = dflt +$ fastread = fastread_save +$ delete/symbol fastread_save $ IF ans $ THEN $ echo4 "Okay, continuing." @@ -661,8 +745,6 @@ $ ELSE $ echo4 "Okay, bye." $ DELETE/NOLOG/NOCONFIRM []ver.out; $ GOTO Clean_up -$ STOP -$ exit 0 $ ENDIF $ ENDIF $ DELETE/SYMBOL line @@ -682,8 +764,8 @@ $ contains /NOOUTPUT [-.CONFIG]INSTRUCT. 'user' $ IF .NOT.($status.EQ.%X08D78053) $ THEN $ firsttime="" -$ dflt = "n" -$ rp = "Would you like to see the instructions? [''dflt'] " +$ bool_dflt = "n" +$ rp = "Would you like to see the instructions? [''bool_dflt'] " $ GOSUB myread $ if .NOT.ans THEN needman="" $ ENDIF @@ -694,6 +776,7 @@ $! $ IF (needman) $ THEN $ TYPE SYS$INPUT: +$ DECK This installation shell script will examine your system and ask you questions to determine how the perl5 package should be installed. If you get @@ -702,16 +785,20 @@ process, edit something, then restart this process as you just did. Many of the questions will have default answers in square brackets; typing carriage return will give you the default. +$ EOD $ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans $ TYPE SYS$INPUT: +$ DECK In a hurry? You may run '@Configure "-d"'. This will bypass nearly all the questions and use the computed defaults (or the previous answers provided there was already a config.sh file). Type '@Configure "-h"' for a list of options. +$ EOD $ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans $ TYPE SYS$INPUT: +$ DECK Much effort has been expended to ensure that this shell script will run on any VMS system. If despite that it blows up on yours, your @@ -719,6 +806,7 @@ best bet is to edit Configure.com and @ it again. Whatever problems you have with Configure.com, let me (dan@sidhe.org) know how I blew it. +$ EOD $!This installation script affects things in two ways: $! $!1) it may do direct variable substitutions on some of the files included @@ -776,38 +864,72 @@ $ GOTO Beyond_config_sh $ ENDIF $Config_sh_found: $ IF F$TYPE(osname) .EQS. "" THEN osname = F$EDIT(F$GETSYI("NODE_SWTYPE"),"COLLAPSE") -$ IF F$TYPE(config_dflt) .EQS. "" THEN config_dflt = "n" -$ rp = "Shall I @ ''config_sh' for default answers? [''config_dflt'] " +$ bool_dflt = "n" +$ IF F$TYPE(config_dflt) .NES. "" THEN bool_dflt = config_dflt +$ rp = "Shall I use ''config_sh' for default answers? [''bool_dflt'] " $ GOSUB myread -$ IF ans .EQS. "" THEN ans = config_dflt $ IF ans $ THEN $ echo "" $ echo "Fetching default answers from ''config_sh'..." $! -$! This @ is why config_sh must employ DCL syntax. Note that for -$! symbols to be returned to this procedure they must be global. -$! Which implies that assignments must be of the :== or == variety. -$! Note further that the [-]config.sh file written by this procedure -$! employs shell syntax. In order to convert shell syntax to DCL -$! you might try: -$! -$! perl -ni -e "s/^#/!#/;s/='/==""/;s/'$/""/;print ""\$ $_"";" config.sh -$! -$! However, watch out for sig_nam, sig_nam_init, sig_num, startperl -$! and any of the lower case double quoted variables such as the *format -$! variables in such a config."sh". -$! -$ @'config_sh +$! we do our own parsing of the shell-script stuff +$! ...and only accept symbols if they're in the | delimited list below +$! +$ config_symbols0 ="|archlib|archlibexp|bin|binexp|builddir|cf_email|config_sh|installarchlib|installbin|installman1dir|installman3dir|" +$ config_symbols1 ="|installprivlib|installscript|installsitearch|installsitelib|most|oldarchlib|oldarchlibexp|osname|pager|perl_symbol|perl_verb|" +$ config_symbols2 ="|prefix|privlib|privlibexp|scriptdir|sitearch|sitearchexp|sitelib|sitelib_stem|sitelibexp|try_cxx|use64bitall|use64bitint|" +$ config_symbols3 ="|usecasesensitive|usedefaulttypes|usedevel|useieee|useithreads|usemultiplicity|usemymalloc|usedebugging_perl|useperlio|usesecurelog|" +$ config_symbols4 ="|usethreads|usevmsdebug|" +$! +$ open/read CONFIG 'config_sh' +$ rd_conf_loop: +$ read/end=erd_conf_loop CONFIG line +$ line = f$edit(line,"trim") +$ if line .eqs. "" .or. f$extract(0,1,line) .eqs. "#" then goto rd_conf_loop +$ sym = f$element(0,"=",line) +$ if sym .eqs. "=" then goto rd_conf_loop +$ dsym = "|"+sym+"|" +$ k = 0 +$ rd_ck_loop: +$ syms = config_symbols'k' +$ j = f$locate(dsym, syms) +$ if j .lt. f$length(syms) then goto erd_ck_loop +$ k = k + 1 +$ if k .lt. 5 then goto rd_ck_loop +$ goto rd_conf_loop +$ erd_ck_loop: +$ val = f$element(1,"=",line) +$ val = f$extract(1,f$length(val)-2,val) +$ write sys$output "''sym' = ""''val'""" +$ 'sym' = "''val'" +$ goto rd_conf_loop +$ erd_conf_loop: +$ close CONFIG +$ delete/symbol config_symbols0 +$ delete/symbol config_symbols1 +$ delete/symbol config_symbols2 +$ delete/symbol config_symbols3 +$ delete/symbol config_symbols4 +$ delete/symbol sym +$ delete/symbol val +$ delete/symbol dsym +$ if f$type(usedebugging_perl) .nes. "" +$ then +$ useperldebug = usedebugging_perl +$ delete/symbol usedebugging_perl +$ endif $! $ ENDIF -$ DELETE/SYMBOL config_dflt +$ if f$type(config_dflt) .nes. "" then DELETE/SYMBOL config_dflt $! $!we actually do not have "hints/" for VMS $! TYPE SYS$INPUT: +$! DECK $! $!First time through, eh? I have some defaults handy for the following systems: $! +$! EOD $! echo " ","VMS_VAX" $! echo " ","VMS_AXP" $! : Now look for a hint file osname_osvers, unless one has been @@ -829,13 +951,16 @@ $ IF (osname .NES. "VMS") $ THEN $ echo4 "Hmm.. I wonder what ''osname' is (?)" $ TYPE SYS$INPUT: +$ DECK %Config-E-VMS, ERROR: Err, you do not appear to be running VMS! This procedure is intended to Configure the building of Perl for VMS. -$ READ SYS$COMMAND/PROMPT="Continue anyway? [n] " ans +$ EOD +$ bool_dflt = "n" +$ GOSUB myread $ IF ans $ THEN $ echo4 "Continuing..." @@ -845,24 +970,6 @@ $ SET DEFAULT 'vms_default_directory_name' !be kind rewind $ STOP $ EXIT 2 !$STATUS = "%X00000002" (error) $ ENDIF -$ ELSE !we are on VMS huzzah! -$ IF .NOT.silent -$ THEN TYPE SYS$INPUT: - -Configure uses the operating system name and version to set some defaults. -The default value is probably right if the name rings a bell. Otherwise, -since spelling matters for me, either accept the default or answer "none" -to leave it blank. -$ ENDIF -$ rp = "Operating system name? [''osname'] " -$ GOSUB myread -$ IF ans.nes."" -$ THEN -$ IF (ans.NES.osname) !.AND.knowitall -$ THEN -$ echo4 "I'll go with ''osname' anyway..." -$ ENDIF -$ ENDIF $ ENDIF !(osname .NES./.EQS. "VMS") $! $!: who configured the system @@ -934,11 +1041,11 @@ $ tzspan = "''tzhour' hours & ''tzminrem' minutes" $ ELSE $ tzspan = "''tzhour' hours" $ ENDIF -$ dflt = "y" +$ bool_dflt = "y" $ echo "Your system is ''tzspan' ''direction'UTC in England." -$ rp = "(''systz') Is this UTC Time Zone Offset correct? [''dflt'] " +$ rp = "(''systz') Is this UTC Time Zone Offset correct? [''bool_dflt'] " $ GOSUB myread -$ IF ans.OR.(ans.EQS."") +$ IF ans $ THEN $ tzneedset = "f" $ tzd = systz @@ -994,6 +1101,9 @@ $!: determine the architecture name $! genconfig.pl has either archname='VMS_AXP' or 'VMS_VAX' $! Note that DCL in VMS V5.4 does not have F$GETSYI("ARCH_NAME") $! but does have F$GETSYI("HW_MODEL"). +$! Please try to use either archname .EQS. "VMS_VAX" or archname .EQS. +$! "VMS_AXP" from here on to allow cross-platform configuration (e.g. +$! configure a VAX build on an Alpha). $! $ IF (F$GETSYI("HW_MODEL") .LT. 1024) $ THEN @@ -1007,6 +1117,7 @@ $ otherarch = "a VAX" $ alignbytes="8" $ arch_type = "ARCH-TYPE=__AXP__" $ ENDIF +$ dflt = archname $ rp = "What is your architecture name? [''archname'] " $ GOSUB myread $ IF ans.NES."" @@ -1017,16 +1128,12 @@ $ THEN $ echo4 "I'll go with ''archname' anyway..." $ ENDIF $ ENDIF -$ dflt = "n" +$ bool_dflt = "n" $ vms_prefix = "perl_root" $ vms_prefixup = F$EDIT(vms_prefix,"UPCASE") -$ rp = "Will you be sharing your ''vms_prefixup' with ''otherarch'? [''dflt'] " +$ rp = "Will you be sharing your ''vms_prefixup' with ''otherarch'? [''bool_dflt'] " $ GOSUB myread -$ if ans.NES."" -$ THEN -$ ans = F$EXTRACT(0,1,F$EDIT(ans,"COLLAPSE, UPCASE")) -$ ENDIF -$ IF (ans.NES."Y") +$ IF .NOT. ans $ THEN $ sharedperl = "N" $ ELSE @@ -1046,9 +1153,10 @@ $! $ IF F$TYPE(prefix) .EQS. "" $ THEN $ prefix = F$ENVIRONMENT("DEFAULT") - ".UU]" + "]" -$ prefix = F$PARSE(prefix,,,,"NO_CONCEAL") - "][" - ".;" +$ prefix = F$PARSE(prefix,,,,"NO_CONCEAL") - "][" - "000000." - ".000000" - ".;" $ prefixbase = prefix - "]" -$ prefix = prefixbase + ".]" +$! Add _ROOT to make install PERL_ROOT differ from build directory. +$ prefix = prefixbase + "_ROOT.]" $ ENDIF $ src = prefix $!: determine root of directory hierarchy where package will be installed. @@ -1078,12 +1186,22 @@ $! -> ask if removal desired. $! Check here for writability of requested PERL_ROOT if it is not the default (cwd). $! -> recommend letting PERL_ROOT be PERL_SRC if requested PERL_ROOT is not writable. $! +$ tmp = perl_root - ".]" + "]" +$ dflt = f$parse(tmp,,,,) +$ IF dflt .eqs. "" +$ THEN +$ echo4 "''tmp' does not yet exist." +$! create/directory 'tmp' +$ ELSE +$ echo4 "''tmp' already exists." +$ ENDIF +$! $ vms_skip_install = "true" -$ dflt = "y" +$ bool_dflt = "y" $! echo "" -$ rp = "Skip the remaining """"where install"""" questions? [''dflt'] " +$ rp = "Skip the remaining """"where install"""" questions? [''bool_dflt'] " $ GOSUB myread -$ IF (.NOT.ans).AND.(ans.NES."") THEN vms_skip_install = "false" +$ IF (.NOT.ans) THEN vms_skip_install = "false" $ IF (.NOT.vms_skip_install) $ THEN $! @@ -1093,10 +1211,13 @@ $!: determine where private library files go $!: Usual default is /usr/local/lib/perl5. Also allow things like $!: /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant. $ IF .NOT.silent -$ THEN TYPE SYS$INPUT: +$ THEN +$ TYPE SYS$INPUT: +$ DECK There are some auxiliary files for perl5 that need to be put into a private library directory that is accessible by everyone. +$ EOD $ ENDIF $ IF F$TYPE(privlib) .NES. "" $ THEN dflt = privlib @@ -1105,16 +1226,16 @@ $ ENDIF $ rp = "Pathname where the private library files will reside? " $ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ") $ GOSUB myread -$ IF ans.NES."" -$ THEN privlib = ans -$ ELSE privlib = dflt -$ ENDIF +$ privlib = ans $! $ ENDIF !%Config-I-VMS, skip remaining "where install" questions $! -$ perl_symbol = "true" -$ perl_verb = "" -$ dflt = "y" +$ IF F$TYPE(perl_symbol) .EQS. "" THEN perl_symbol := true +$ IF F$TYPE(perl_verb) .EQS. "" THEN perl_verb = "" +$ IF perl_symbol +$ THEN bool_dflt = "y" +$ ELSE bool_dflt = "n" +$ ENDIF $ IF .NOT.silent $ THEN $ echo "" @@ -1123,13 +1244,16 @@ $ echo "symbol to invoke ''package', which is the usual method." $ echO "If you do not do so then you would need a DCL command verb at the" $ echo "process or the system wide level." $ ENDIF -$ rp = "Invoke perl as a global symbol foreign command? [''dflt'] " +$ rp = "Invoke perl as a global symbol foreign command? [''bool_dflt'] " $ GOSUB myread -$ IF (.NOT.ans).AND.(ans.NES."") THEN perl_symbol = "false" +$ IF (.NOT.ans) THEN perl_symbol = "false" $! $ IF (.NOT.perl_symbol) $ THEN -$ dflt = "y" +$ IF perl_verb .EQS. "DCLTABLES" +$ THEN bool_dflt = "n" +$ ELSE bool_dflt = "y" +$ ENDIF $ IF .NOT.silent $ THEN $ echo "" @@ -1137,9 +1261,9 @@ $ echo "Since you won't be using a symbol you must choose to put the ''packa $ echo "verb in a per-process table or in the system wide DCLTABLES (which" $ echo "would require write privilege)." $ ENDIF -$ rp = "Invoke perl as a per process command verb? [ ''dflt' ] " +$ rp = "Invoke perl as a per process command verb? [ ''bool_dflt' ] " $ GOSUB myread -$ IF (.NOT.ans).AND.(ans.NES."") +$ IF (.NOT.ans) $ THEN perl_verb = "DCLTABLES" $ ELSE perl_verb = "PROCESS" $ ENDIF @@ -1159,6 +1283,7 @@ $ got_sub = "false" $ got_api_revision = "false" $ got_api_version = "false" $ got_api_subversion = "false" +$ got_perl_patchlevel= "false" $ OPEN/READONLY CONFIG 'patchlevel_h' $Patchlevel_h_loop: $ READ/END_Of_File=Close_patch/ERROR=Close_patch CONFIG line @@ -1192,19 +1317,36 @@ $ line = F$EDIT(line,"COMPRESS, TRIM") $ api_subversion = F$ELEMENT(2," ",line) $ got_api_subversion = "true" $ ENDIF -$ IF (.NOT.got_patch).OR.(.NOT.got_sub) THEN GOTO Patchlevel_h_loop +$ IF ((F$LOCATE("""DEVEL",line).NE.F$LENGTH(line)).AND.(.NOT.got_perl_patchlevel)) +$ THEN +$ line = F$EDIT(line,"COMPRESS, TRIM") +$ perl_patchlevel = F$ELEMENT(1,"""",line) +$ perl_patchlevel = perl_patchlevel - "DEVEL" +$ got_perl_patchlevel = "true" +$ ENDIF +$ IF (.NOT. got_patch) .OR. - + (.NOT. got_sub) .OR. - + (.NOT. got_api_revision) .OR. - + (.NOT. got_api_version) .OR. - + (.NOT. got_api_subversion) .OR. - + (.NOT. got_perl_patchlevel) - + THEN GOTO Patchlevel_h_loop $Close_patch: $ CLOSE CONFIG $ ELSE $ patchlevel="0" $ subversion="0" +$ api_revision="0" +$ api_version="0" +$ api_subversion="0" +$ perl_patchlevel="0" $ ENDIF -$ IF (F$STRING(subversion) .NES. "0") +$ version_patchlevel_string = "version ''patchlevel' subversion ''subversion'" +$ IF got_perl_patchlevel .AND. perl_patchlevel .NES. "0" $ THEN -$ echo "(You have ''package' revision ''revision' patchlevel ''patchlevel' subversion ''subversion'.)" -$ ELSE -$ echo "(You have ''package' revision ''revision' patchlevel ''patchlevel'.)" +$ version_patchlevel_string = "''version_patchlevel_string' patch ''perl_patchlevel'" $ ENDIF +$ echo "(You have ''package' ''version_patchlevel_string'.)" $! $ version = revision + "_" + patchlevel + "_" + subversion $! @@ -1219,10 +1361,13 @@ $ echo "" $ echo "''package' contains architecture-dependent library files. If you are" $ ENDIF $ IF (.NOT.silent) -$ THEN TYPE SYS$INPUT: +$ THEN +$ TYPE SYS$INPUT: +$ DECK sharing libraries in a heterogeneous environment, you might store these files in a separate location. Otherwise, you can just include them with the rest of the public library files. +$ EOD $ ENDIF $ IF F$TYPE(archlib) .NES. "" $ THEN dflt = archlib @@ -1231,20 +1376,18 @@ $ ENDIF $ rp = "Where do you want to put the public architecture-dependent libraries? " $ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ") $ GOSUB myread -$ IF ans.NES."" -$ THEN archlib = ans -$ ELSE archlib = dflt -$ ENDIF +$ archlib = ans $! $ ENDIF !%Config-I-VMS, skip "where install" questions $! $! This quotation from Configure has to be included on VMS: $! $ TYPE SYS$INPUT: +$ DECK There is, however, a strange, musty smell in the air that reminds me of something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. -$ CONTINUE +$ EOD $ IF (.NOT.vms_skip_install) $ THEN $!: it so happens the Eunice I know will not run shell scripts in Unix format @@ -1254,12 +1397,15 @@ $!: now see if they want to do setuid emulation !sfn $! $!: determine where site specific libraries go. $ IF .NOT.silent -$ THEN TYPE SYS$INPUT: +$ THEN +$ TYPE SYS$INPUT: +$ DECK The installation process will also create a directory for site-specific extensions and modules. Some users find it convenient to place all local files in this directory rather than in the main distribution directory. +$ EOD $ ENDIF $ IF F$TYPE(sitelib) .NES. "" $ THEN dflt = sitelib @@ -1268,17 +1414,16 @@ $ ENDIF $ rp = "Pathname for the site-specific library files? " $ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ") $ GOSUB myread -$ IF ans.NES."" -$ THEN sitelib = ans -$ ELSE sitelib = dflt -$ ENDIF +$ sitelib = ans $! $!: determine where site specific architecture-dependent libraries go. $ IF .NOT.silent $ THEN TYPE SYS$INPUT: +$ DECK The installation process will also create a directory for architecture-dependent site-specific extensions and modules. +$ EOD $ ENDIF $ IF F$TYPE(sitearch) .NES. "" $ THEN dflt = sitearch @@ -1287,10 +1432,7 @@ $ ENDIF $ rp = "Pathname for the site-specific architecture-dependent library files? " $ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ") $ GOSUB myread -$ IF ans.NES."" -$ THEN sitearch = ans -$ ELSE sitearch = dflt -$ ENDIF +$ sitearch = ans $! $!: determine where old public architecture dependent libraries might be $! @@ -1303,10 +1445,7 @@ $ ENDIF $ rp = "Pathname where the public executables will reside? " $ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ") $ GOSUB myread -$ IF ans.NES."" -$ THEN bin = ans -$ ELSE bin = dflt -$ ENDIF +$ bin = ans $! $!: determine where manual pages are on this system $!: What suffix to use on installed man pages @@ -1359,6 +1498,8 @@ $ IF F$TYPE(oldarchlibexp) .EQS. "" THEN - oldarchlibexp="''vms_prefix':[lib.''archname']" $ IF F$TYPE(privlibexp) .EQS. "" THEN - privlibexp ="''vms_prefix':[lib]" +$ IF F$TYPE(scriptdir) .EQS. "" THEN - + scriptdir ="''vms_prefix':[utils]" $ IF F$TYPE(sitearchexp) .EQS. "" THEN - sitearchexp ="''vms_prefix':[lib.site_perl.''archname']" $ IF F$TYPE(sitelib_stem) .EQS. "" THEN - @@ -1447,7 +1588,7 @@ $ IF (silent) THEN GOSUB Shut_up $ CLOSE CONFIG $ IF (tmp.NE.%X10000001).and.(tmp.ne.%X00030001) $ THEN -$ echo "Symbol ""''gcc_symbol'"" is not defined. I guess you don't have it." +$ echo "Symbol ""''gcc_symbol'"" is not defined. I guess you do not have it." $ DELETE/NOLOG/NOCONFIRM gccvers.lis; $ GOTO Cxx_initial_check $ ENDIF @@ -1465,11 +1606,11 @@ $Cxx_initial_check: $! $! Do note that [vms]perl source files have a ways to go before they will $! compile under CXX. -$! In order to test Configure.com with CXX swap the '!' comment character -$! between the following two lines. +$! In order to test Configure.com with CXX invoke it with "-Dtry_cxx" on +$! the command line. $! -$! IF 1 .eq. 1 -$ IF 1 .eq. 0 +$ IF F$TYPE(try_cxx) .EQS. "" THEN try_cxx := n +$ IF try_cxx .OR. try_cxx .EQS. "define" $! $ THEN $! @@ -1564,51 +1705,53 @@ $ Mcc = ans $ IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans)) $ THEN $ Mcc = "cc/decc" -$ Using_Dec_C := Y +$! CPQ ? +$ ccname := DEC $ C_COMPILER_Replace = "CC=cc=''Mcc'" $ ENDIF $ IF F$LOCATE("cxx",F$EDIT(ans,"COLLAPSE,LOWERCASE")) .NE. F$LENGTH(ans) $ THEN $ Mcc = "cxx" -$ using_cxx := Y +$ ccname := CXX $ ld = ld_try -$! C_COMPILER_Replace = "CC=cc=''Mcc'" -$ ENDIF -$ IF Mcc.NES.dflt -$ THEN -$ IF F$LOCATE("dec",dflt) .NE. F$LENGTH(dflt) .or. - - F$LOCATE("compaq",dflt) .NE. F$LENGTH(dflt) -$ THEN -$ C_COMPILER_Replace = "CC=cc=''Mcc'" -$ ELSE -$ Using_Dec_C := Y -$ ENDIF -$ ELSE -$ IF Mcc .EQS. "cc/decc" +$ C_COMPILER_Replace = "CC=cc=''Mcc'" +$ ELSE ! Not_cxx +$ IF Mcc.NES.dflt $ THEN -$ Using_Dec_C := Y -$ C_COMPILER_Replace = "CC=cc=''Mcc'" +$ IF F$LOCATE("dec",dflt) .NE. F$LENGTH(dflt) .or. - + F$LOCATE("compaq",dflt) .NE. F$LENGTH(dflt) +$ THEN +$ C_COMPILER_Replace = "CC=cc=''Mcc'" +$ ELSE +$ ccname := DEC +$ ENDIF +$ ELSE +$ IF Mcc .EQS. "cc/decc" +$ THEN +$ ccname := DEC +$ C_COMPILER_Replace = "CC=cc=''Mcc'" +$ ENDIF $ ENDIF $ ENDIF $ ELSE $ Mcc = dflt $ IF Mcc .EQS. "cc/decc" $ THEN -$ Using_Dec_C := Y +$ ccname := DEC $ C_COMPILER_Replace = "CC=cc=''Mcc'" $ ENDIF $ IF Mcc .EQS. "gcc" $ THEN -$ Using_Gnu_C := Y +$ ccname := GCC $ C_COMPILER_Replace = "CC=cc=''Mcc'" $ ENDIF $ ENDIF $Decc_Version_check: $ ccversion="" -$ IF Using_Dec_C +$ IF ccname .EQS. "DEC" $ THEN $ echo "" -$ echo4 "Checking for Dec C's version number..." +$ echo4 "Checking for the Dec C version number..." $ OPEN/WRITE CONFIG deccvers.c $ WRITE CONFIG "#include " !DECC is sooo picky $ WRITE CONFIG "#include " @@ -1658,7 +1801,7 @@ $ DELETE/NOLOG/NOCONFIRM deccvers.*; $ ENDIF $Gcc_check: $ gccversion = "" -$ IF Using_Gnu_C +$ IF ccname .EQS. "GCC" $ THEN $ vaxcrtl_olb = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB") $ vaxcrtl_exe = F$SEARCH("SYS$SHARE:VAXCRTL.EXE") @@ -1703,7 +1846,6 @@ $ THEN $ echo "" $ echo4 "Checking for GNU cc in disguise and/or its version number..." !>&4 $ OPEN/WRITE CONFIG gccvers.c -$! WRITE CONFIG "#include " !DECC is sooo picky $ WRITE CONFIG "#include " $ WRITE CONFIG "int main() {" $ WRITE CONFIG "#ifdef __GNUC__" @@ -1766,14 +1908,14 @@ $ GOTO Host_name $ ELSE $ echo "You are using GNU cc ''line'" $ gccversion = line -$ Using_Gnu_C := Y +$ ccname := "GCC" $ C_COMPILER_Replace = "CC=cc=''Mcc'" $ GOTO Include_dirs $ ENDIF $ ENDIF $ ENDIF $Cxx_Version_check: -$ IF using_cxx +$ IF ccname .EQS. "CXX" $ THEN $ OPEN/WRITE CONFIG cxxvers.c $ WRITE CONFIG "#include " @@ -1842,7 +1984,7 @@ $! $List_Parse: $ OPEN/READ CONFIG ccvms.lis $ READ CONFIG line -$ IF (F$GETSYI("HW_MODEL") .LT. 1024) +$ IF archname .EQS. "VMS_VAX" $ THEN $ read CONFIG line $ archsufx = "VAX" @@ -1885,6 +2027,10 @@ $ IF myhostname.eqs."".and. - F$TRNLNM("UCX$INET_HOST") .nes. "" .and. - F$TRNLNM("UCX$INET_DOMAIN") .nes. "" THEN - myhostname = F$TRNLNM("UCX$INET_HOST") + "." + F$TRNLNM("UCX$INET_DOMAIN") +$ IF myhostname.eqs."".and. - + F$TRNLNM("TCPIP$INET_HOST") .nes. "" .and. - + F$TRNLNM("TCPIP$INET_DOMAIN") .nes. "" THEN - + myhostname = F$TRNLNM("TCPIP$INET_HOST") + "." + F$TRNLNM("TCPIP$INET_DOMAIN") $ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("TCPWARE_DOMAINNAME") $ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("NEWS_ADDRESS") $ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("SYS$NODE") - "::" @@ -1892,8 +2038,9 @@ $ IF myhostname.eqs."" THEN myhostname = F$EDIT(F$GETSYI("SCSNODE"),"TRIM") $!: you do not want to know about this $!: verify guess $ rp = "Your host name appears to be """"''myhostname'"""". Right? " +$ bool_dflt = "y" $ GOSUB myread -$ IF (.not.ans).and.(ans.NES."") +$ IF (.not.ans) $ THEN $ READ SYS$COMMAND/PROMPT= - "Please type the (one word) name of your host: " ans @@ -1913,8 +2060,9 @@ $ mydomain = F$EXTRACT(fp,(F$LENGTH(myhostname)-fp)+1,myhostname) $ IF mydomain.NES."" !no periods in DECnet names like "MYDECNODE::" $ THEN $ rp = "What is your domain name? [''mydomain'] " +$ dflt = mydomain $ GOSUB myread -$ IF ans .nes. "" THEN mydomain = ans +$ mydomain = ans $!: translate upper to lower if necessary $ mydomain = F$EDIT(mydomain,"COLLAPSE") $ mylowdomain = F$EDIT(mydomain," LOWERCASE") @@ -1927,38 +2075,41 @@ $ ENDIF $ myhostname = myhostname - mydomain $ echo "(Trimming domain name from host name--host name is now ''myhostname')" $ IF .NOT.silent -$ THEN TYPE SYS$INPUT: +$ THEN +$ TYPE SYS$INPUT: +$ DECK I need to get your e-mail address in Internet format if possible, i.e. something like user@host.domain. Please answer accurately since I have no easy means to double check it. The default value provided below is most probably close to the reality but may not be valid from outside your organization... +$ EOD $ ENDIF -$ dflt = "''cf_by'@''myhostname'"+"''mydomain'" -$ rp = "What is your e-mail address? [''dflt'] " -$ GOSUB myread -$ IF ans .nes. "" -$ THEN cf_email = ans -$ ELSE cf_email = dflt +$ IF F$TYPE(cf_email) .EQS. "" +$ THEN +$ dflt = "''cf_by'@''myhostname'"+"''mydomain'" +$ rp = "What is your e-mail address? [''dflt'] " +$ GOSUB myread +$ cf_email = ans $ ENDIF $! $ IF .NOT.silent -$ THEN TYPE SYS$INPUT: +$ THEN +$ TYPE SYS$INPUT: +$ DECK If you or somebody else will be maintaining perl at your site, please fill in the correct e-mail address here so that they may be contacted if necessary. Currently, the "perlbug" program included with perl will send mail to this address in addition to perlbug@perl.com. You may enter "none" for no administrator. +$ EOD $ ENDIF $ dflt = "''cf_email'" $ rp = "Perl administrator e-mail address [''dflt'] " $ GOSUB myread -$ IF ans .nes. "" -$ THEN perladmin = ans -$ ELSE perladmin = dflt -$ ENDIF +$ perladmin = ans $! $!: determine where public executable scripts go $!: determine perl absolute location @@ -1982,21 +2133,22 @@ $!: compute shared library extension $!: Looking for optional libraries $!: see if nm is to be used to determine whether a symbol is defined or not $!: get list of predefined functions in a handy place -$!: see if we have sigaction +$!: see if we have sigaction or sigprocmask $!: see whether socketshr exists $ IF (F$SEARCH(F$PARSE("SocketShr","Sys$Share:.Exe")).NES."") $ THEN $ Has_socketshr = "T" $ echo "" -$ echo4 "Hmm... Looks like you have SOCKETSHR's Berkeley networking support." +$ echo4 "Hmm... Looks like you have SOCKETSHR Berkeley networking support." $ ELSE $ Has_socketshr = "F" $ ENDIF -$ IF (Dec_C_Version .GE. 50200000) +$ IF (ccname .EQS. "DEC" .AND. Dec_C_Version .GE. 50200000) .OR. - + (ccname .EQS. "CXX") $ THEN $ Has_Dec_C_Sockets = "T" $ echo "" -$ echo4 "Hmm... Looks like you've got Dec C's Berkeley networking support." +$ echo4 "Hmm... Looks like you have Dec C Berkeley networking support." $ ELSE $ Has_Dec_C_Sockets = "F" $ ENDIF @@ -2004,8 +2156,8 @@ $ ! Hey, we've got both. Default to Dec C, then, since it's better $ IF Has_socketshr .OR. Has_Dec_C_Sockets $ THEN $ echo "" -$ echo "You've got sockets available. Which socket stack do you want to" -$ echo "build into perl?" +$ echo "You have sockets available. Which socket stack do you want to" +$ echo "build into Perl?" $ IF Has_Dec_C_Sockets $ THEN $ dflt = "DECC" @@ -2017,7 +2169,6 @@ $ IF Has_socketshr THEN rp = rp + ",SOCKETSHR" $ IF Has_Dec_C_Sockets THEN rp = rp + ",DECC" $ rp = rp + ") [''dflt'] " $ GOSUB myread -$ IF ans .EQS. "" THEN ans = "''dflt'" $ Has_Dec_C_Sockets = "F" $ Has_socketshr = "F" $ ans = F$EDIT(ans,"TRIM,COMPRESS,LOWERCASE") @@ -2032,47 +2183,52 @@ $ echo "Perl can be built to run under the VMS debugger." $ echo "You should only select this option if you are debugging" $ echo "perl itself. This can be a useful feature if you are " $ echo "embedding perl in a program." -$ dflt = "n" -$ rp = "Build a VMS-DEBUG version of Perl? [''dflt'] " +$ bool_dflt = "n" +$ if f$type(usevmsdebug) .nes. "" +$ then +$ if usevmsdebug .or. usevmsdebug .eqs. "define" then bool_dflt="y" +$ endif +$ rp = "Build a VMS-DEBUG version of Perl? [''bool_dflt'] " $ GOSUB myread -$ IF ans.eqs."" then ans = dflt -$ IF F$EXTRACT(0, 1, F$EDIT(ans,"COLLAPSE,UPCASE")) .eqs. "Y" +$ use_vmsdebug_perl = ans +$ IF use_vmsdebug_perl $ THEN -$ use_vmsdebug_perl = "Y" +$ usevmsdebug = "define" $ macros = macros + """__DEBUG__=1""," $ ELSE -$ use_vmsdebug_perl = "N" +$ usevmsdebug = "undef" $ ENDIF $! $! Ask if they want to build with DEBUGGING $ echo "" -$ echo "Perl can be built with extra runtime debugging enabled. This -$ echo "enables the -D switch, at the cost of some performance. It -$ echo "was mandatory on perl 5.005 and before on VMS, but is now -$ echo "optional. If you don't generally use it you should probably -$ echo "leave this off and gain a bit of extra speed. -$ dflt = "y" -$ rp = "Build a DEBUGGING version of Perl? [''dflt'] " +$ echo "Perl can be built with extra runtime debugging enabled. This" +$ echo "enables the -D switch, at the cost of some performance. It" +$ echo "was mandatory on perl 5.005 and before on VMS, but is now" +$ echo "optional. If you do not generally use it you should probably" +$ echo "leave this off and gain a bit of extra speed." +$ bool_dflt = "y" +$ if f$type(useperldebug) .nes. "" +$ then +$ if f$extract(0,1,f$edit(useperldebug,"collapse,upcase")).eqs."N" .or. useperldebug .eqs. "undef" then bool_dflt="n" +$ endif +$ rp = "Build a DEBUGGING version of Perl? [''bool_dflt'] " $ GOSUB myread -$ IF ans.eqs."" then ans = dflt -$ IF F$EXTRACT(0, 1, F$EDIT(ans,"COLLAPSE,UPCASE")) .eqs. "Y" -$ THEN -$ use_debugging_perl = "Y" -$ ELSE -$ use_debugging_perl = "N" -$ ENDIF +$ use_debugging_perl = ans $! $! Ask if they want to build with MULTIPLICITY $ echo "" $ echo "Perl can be built so that multiple Perl interpreters can coexist" $ echo "within the same Perl executable." -$ echo "There is some performance overhead, however, so you -$ echo "probably don't want to choose this unless you're going to be doing -$ echo "things with embedded perl." -$ dflt = "n" -$ rp = "Build Perl for multiplicity? [''dflt'] " +$ echo "There is some performance overhead, however, so you" +$ echo "probably do not want to choose this unless you are going to be" +$ echo "doing things with embedded perl." +$ bool_dflt = "n" +$ if f$type(usemultiplicity) .nes. "" +$ then +$ if usemultiplicity .or. usemultiplicity .eqs. "define" then bool_dflt = "y" +$ endif +$ rp = "Build Perl for multiplicity? [''bool_dflt'] " $ GOSUB myread -$ IF ans.eqs."" then ans = dflt $ IF ans $ THEN $ usemultiplicity="define" @@ -2083,154 +2239,176 @@ $! $! Ask if they want to build with 64-bit support $ IF (archname.eqs."VMS_AXP").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1") $ THEN -$ dflt = use64bitint +$ bool_dflt = "n" +$ IF F$TYPE(use64bitint) .NES. "" +$ THEN +$ IF use64bitint .OR. use64bitint .eqs. "define" THEN bool_dflt = "y" +$ ENDIF $ echo "" -$ echo "You can have native 64-bit long integers. +$ echo "You can have native 64-bit long integers." $ echo "" -$ echo "Perl can be built to take advantage of 64-bit integer types -$ echo "on some systems, which provide a much larger range for perl's -$ echo "mathematical operations. (Note that does *not* enable 64-bit +$ echo "Perl can be built to take advantage of 64-bit integer types" +$ echo "on some systems, which provide a much larger range for perl's" +$ echo "mathematical operations. (Note that does *not* enable 64-bit" $ echo "fileops at the moment, as Dec C doesn't do that yet)." -$ echo "Choosing this option will most probably introduce binary incompatibilities. +$ echo "Choosing this option will most probably introduce binary incompatibilities." $ echo "" -$ echo "If this doesn't make any sense to you, just accept the default ''dflt'. -$ rp = "Try to use 64-bit integers, if available? [''dflt'] " +$ echo "If this does not make any sense to you, just accept the default ''dflt'." +$ rp = "Try to use 64-bit integers, if available? [''bool_dflt'] " $ GOSUB myread -$ IF ans .EQS. "" THEN ans = dflt -$ IF (f$extract(0, 1, f$edit(ans,"COLLAPSE,UPCASE")) .EQS. "Y") +$ use64bitint = ans +$! +$ bool_dflt = "n" +$ IF F$TYPE(use64bitall) .NES. "" $ THEN -$ use64bitint="Y" -$ ELSE -$ use64bitint="N" +$ IF use64bitall .OR. use64bitall .eqs. "define" THEN bool_dflt = "y" $ ENDIF -$ IF (use64bitint) +$ echo "" +$ echo "You may also choose to try maximal 64-bitness. It means using as much" +$ echo "64-bitness as possible on the platform. This in turn means even more" +$ echo "binary incompatibilities. On the other hand, your platform may not" +$ echo "have any more 64-bitness available than what you already have chosen." +$ echo "" +$ echo "If this does not make any sense to you, just accept the default ''dflt'." +$ rp = "Try to use maximal 64-bit support, if available? [''bool_dflt'] " +$ GOSUB myread +$ use64bitall=ans +$ IF use64bitall .AND. .NOT. use64bitint $ THEN -$ dflt = use64bitall $ echo "" -$ echo "Since you chose 64-bitness you may want to try maximal 64-bitness. -$ echo "What you have chosen is minimal 64-bitness which means just enough -$ echo "to get 64-bit integers. The maximal means using as much 64-bitness -$ echo "as is possible on the platform. This in turn means even more binary -$ echo "incompatibilities. On the other hand, your platform may not have -$ echo "any more maximal 64-bitness than what you already have chosen. -$ echo "" -$ echo "If this doesn't make any sense to you, just accept the default ''dflt'. -$ rp = "Try to use full 64-bit support, if available? [''dflt'] " -$ GOSUB myread -$ IF ans .EQS. "" THEN ans = dflt -$ IF (f$extract(0, 1, f$edit(ans,"COLLAPSE,UPCASE")) .EQS. "Y") -$ THEN -$ use64bitall="Y" -$ ELSE -$ use64bitall="N" -$ ENDIF +$ echo "Since you have chosen a maximally 64-bit build, I'm also turning on" +$ echo "the use of 64-bit integers." +$ use64bitint="Y" $ ENDIF $ ENDIF ! AXP && >= 7.1 $! $! Ask about threads, if appropriate -$ if Using_Dec_C +$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX" $ THEN $ echo "" -$ echo "This version of Perl can be built with threads. While really nifty, -$ echo "they are a beta feature, and there is a speed penalty for perl -$ echo "programs if you build with threads *even if you don't use them* -$ dflt = "n" -$ rp = "Build with threads? [''dflt'] " +$ echo "This version of Perl can be built with threads. While really nifty," +$ echo "they are a beta feature, and there is a speed penalty for perl" +$ echo "programs if you build with threads *even if you do not use them*." +$ bool_dflt = "n" +$ if f$type(usethreads) .nes. "" +$ then +$ if usethreads .or. usethreads .eqs. "define" then bool_dflt="y" +$ endif +$ rp = "Build with threads? [''bool_dflt'] " $ GOSUB myread -$ if ans.eqs."" then ans = dflt -$ if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y") +$ if ans $ THEN $ use_threads="T" -$! $ ! Shall we do the 5.005-stype threads, or IThreads? -$ echo "As of 5.5.640, Perl has two different internal threading -$ echo "implementations, the 5.005 version (5005threads) and an -$ echo "interpreter-based version (ithreads) that has one -$ echo "interpreter per thread. Both are very experimental. This -$ echo "arrangement exists to help developers work out which one -$ echo "is better. -$ echo " -$ echo "If you're a casual user, you probably don't want -$ echo "interpreter-threads at this time. There doesn't yet exist -$ echo "a way to create threads from within Perl in this model, -$ echo "i.e., ""use Thread;"" will NOT work. -$ echo " -$ dflt = "n" -$ rp = "Build with Interpreter threads? [''dflt'] +$ echo "As of 5.5.640, Perl has two different internal threading" +$ echo "implementations, the 5.005 version (5005threads) and an" +$ echo "interpreter-based version (ithreads) that has one" +$ echo "interpreter per thread. Both are very experimental. This" +$ echo "arrangement exists to help developers work out which one" +$ echo "is better." +$ echo "" +$ echo "If you are a casual user, you probably do not want" +$ echo "interpreter-threads at this time. There doesn't yet exist" +$ echo "a way to create threads from within Perl in this model," +$ echo "i.e., ""use Thread;"" will NOT work." +$ echo "" +$ bool_dflt = "n" +$ if f$type(useithreads) .nes. "" +$ then +$ if useithreads .eqs. "define" then bool_dflt="y" +$ endif +$ rp = "Build with Interpreter threads? [''bool_dflt'] " $ GOSUB myread -$ if ans.eqs."" then ans = dflt -$ if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y") +$ use_ithreads=ans +$ if use_ithreads $ THEN -$ use_ithreads="Y" $ use_5005_threads="N" $ ELSE -$ use_ithreads="N" $ use_5005_threads="Y" $ ENDIF $ ! Are they on VMS 7.1 on an alpha? $ if (archname.eqs."VMS_AXP").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1") $ THEN $ echo "" -$ echo "Threaded perl can be linked to use multiple kernel threads -$ echo "and system upcalls on VMS 7.1+ on Alpha systems. This feature -$ echo "allows multiple threads to execute simultaneously on an SMP -$ echo "system as well as preventing a single thread from blocking -$ echo "all the threads in a program, even on a single-processor -$ echo "machine. Unfortunately this feature isn't safe on an -$ echo "unpatched 7.1 system. (Several OS patches were required when -$ echo "this procedure was written) -$ dflt = "n" -$ rp = "Enable multiple kernel threads and upcalls? [''dflt'] " +$ echo "Threaded perl can be linked to use multiple kernel threads" +$ echo "and system upcalls on VMS 7.1+ on Alpha systems. This feature" +$ echo "allows multiple threads to execute simultaneously on an SMP" +$ echo "system as well as preventing a single thread from blocking" +$ echo "all the threads in a program, even on a single-processor" +$ echo "machine. Unfortunately, this feature isn't safe on an" +$ echo "unpatched 7.1 system (several OS patches were required when" +$ echo "this procedure was written)." +$ bool_dflt = "n" +$ rp = "Enable multiple kernel threads and upcalls? [''bool_dflt'] " $ gosub myread -$ if ans.eqs."" then ans="''dflt'" -$ if f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE")).eqs."Y" +$ if ans $ THEN $ Thread_Live_Dangerously = "MT=MT=1" $ ENDIF $ ENDIF $ ENDIF $ ENDIF -$ if archname .eqs. "VMS_AXP" -$ then -$! +$ IF archname .EQS. "VMS_AXP" +$ THEN $! Case sensitive? -$ echo "" -$ echo "By default, perl (and pretty much everything else on VMS) uses -$ echo "case-insensitive linker symbols. Which is to say, when the -$ echo "underlying C code makes a call to a routine called Perl_foo in -$ echo "the source, the name in the object modules or shareable images -$ echo "is really PERL_FOO. There are some packages that use an -$ echo "embedded perl interpreter that instead require case-sensitive -$ echo "linker symbols. -$ echo "" -$ echo "If you have no idea what this means, and don't have -$ echo "any program requiring anything, choose the default. -$ dflt = be_case_sensitive -$ rp = "Build with case-sensitive symbols? [''dflt'] " -$ gosub myread -$ if ans.eqs."" then ans="''dflt'" -$ be_case_sensitive = "''ans'" -$! +$ echo "" +$ echo "By default, perl (and pretty much everything else on VMS) uses" +$ echo "case-insensitive linker symbols. Which is to say, when the" +$ echo "underlying C code makes a call to a routine called Perl_foo in" +$ echo "the source, the name in the object modules or shareable images" +$ echo "is really PERL_FOO. There are some packages that use an" +$ echo "embedded perl interpreter that instead require case-sensitive" +$ echo "linker symbols." +$ echo "" +$ echo "If you have no idea what this means, and do not have" +$ echo "any program requiring anything, choose the default." +$ bool_dflt = be_case_sensitive +$ if f$type(usecasesensitive) .nes. "" +$ then +$ if usecasesensitive .or. usecasesensitive .eqs. "define" then bool_dflt = "y" +$ if f$extract(0,1,f$edit(usecasesensitive,"collapse,upcase")).eqs."N" .or. usecasesensitive .eqs. "undef" then bool_dflt = "n" +$ endif +$ rp = "Build with case-sensitive symbols? [''bool_dflt'] " +$ GOSUB myread +$ be_case_sensitive = ans $! IEEE math? -$ echo "" -$ echo "Perl normally uses G_FLOAT format floating point numbers -$ echo "internally, as do most things on VMS. You can, however, build -$ echo "with IEEE floating point numbers instead if you need to. -$ dflt = use_ieee_math -$ rp = "Use IEEE math? [''dflt'] " -$ gosub myread -$ if ans.eqs."" then ans="''dflt'" -$ use_ieee_math = "''ans'" -$ endif +$ echo "" +$ echo "Perl normally uses IEEE format (T_FLOAT) floating point numbers" +$ echo "internally on Alpha, but if you need G_FLOAT for binary compatibility" +$ echo "with an external library or existing data, you may wish to disable" +$ echo "the IEEE math option." +$ bool_dflt = use_ieee_math +$ if f$type(useieee) .nes. "" +$ then +$ if useieee .or. useieee .eqs. "define" +$ then +$ bool_dflt="y" +$ else +$ bool_dflt="n" +$ endif +$ endif +$ rp = "Use IEEE math? [''bool_dflt'] " +$ GOSUB myread +$ use_ieee_math = ans +$ ELSE +$ be_case_sensitive = "n" +$ use_ieee_math = "n" +$ ENDIF +$ useieee = "undef" +$ usecasesensitive = "undef" +$ if (use_ieee_math) then useieee = "define" +$ if (be_case_sensitive) then usecasesensitive = "define" $! CC Flags $ echo "" -$ echo "You can, if you need to, pass extra flags on to the C -$ echo "compiler. In general you should only do this if you really, -$ echo "really know what you're doing. +$ echo "Your compiler may want other flags. For this question you should include" +$ echo "/INCLUDE=(whatever) and /DEFINE=(whatever), flags and any other flags" +$ echo "or qualifiers used by the compiler." +$ echo "" +$ echo "To use no flags, specify the word ""none""." $ dflt = user_c_flags -$ rp = "Extra C flags [''dflt'] " -$ gosub myread -$ if ans.eqs."" then ans="''dflt'" +$ rp = "Any additional cc flags? [''dflt'] " +$ GOSUB myread +$ IF ans .EQS. "none" THEN ans = "" $ user_c_flags = "''ans'" $! $! Ask whether they want to use secure logical translation when tainting @@ -2248,14 +2426,16 @@ $ echo "This restriction does not apply to the %ENV hash or to implicit" $ echo "logical name translation during parsing of file specifications;" $ echo "these always use the normal sequence of access modes for logical" $ echo "name translation." -$ dflt = "y" -$ rp = "Use secure logical name translation? [''dflt'] " +$ bool_dflt = "y" +$ if f$type(usesecurelog) .nes. "" +$ then +$ if f$extract(0,1,f$edit(usesecurelog,"collapse,upcase")).eqs."N" .or. usesecurelog .eqs. "undef" then bool_dflt = "n" +$ endif +$ rp = "Use secure logical name translation? [''bool_dflt'] " $ GOSUB myread -$ IF ans .eqs. "" THEN ans = dflt -$ IF ans -$ THEN d_secintgenv := Y -$ ELSE d_secintgenv := N -$ ENDIF +$ d_secintgenv = ans +$ usesecurelog = "undef" +$ if (d_secintgenv) then usesecurelog = "define" $! $! Ask whether they want to default filetypes $ echo "" @@ -2267,117 +2447,117 @@ $ echo "file types of nothing, .pl, and .com, in that order (e.g. typing" $ echo """$ perl foo"" would cause Perl to look for foo., then foo.pl, and" $ echo "finally foo.com)." $ echo "" -$ echo "This is currently broken in some configurations. Only enable it if -$ echo "you know what you're doing. " -$ dflt = "n" -$ rp = "Always use default file types? [''dflt'] " +$ echo "This is currently broken in some configurations. Only enable it if" +$ echo "you know what you are doing." +$ bool_dflt = "n" +$ if f$type(usedefaulttypes) .nes. "" +$ then +$ if usedefaulttypes .or. usedefaulttypes .eqs. "define" then bool_dflt="y" +$ endif +$ rp = "Always use default file types? [''bool_dflt'] " $ GOSUB myread -$ IF ans .EQS. "" THEN ans = dflt -$ IF ans -$ THEN d_alwdeftype := Y -$ ELSE d_alwdeftype := N -$ ENDIF +$ d_alwdeftype = ans +$ usedefaulttypes = "undef" +$ if (d_alwdeftype) then usedefaulttypes = "define" $! $! Ask if they want to use perl's memory allocator $ echo "" -$ echo "Perl has a built-in memory allocator that's tuned for perl's -$ echo "normal memory usage. It's oftentimes better than the standard -$ echo "system memory allocator. It also has the advantage of providing -$ echo "memory allocation statistics, if you choose to enable them. -$ dflt = "n" -$ rp = "Build with perl's memory allocator? [''dflt'] " +$ echo "Perl has a built-in memory allocator that is tuned for normal" +$ echo "memory usage. It is oftentimes better than the standard system" +$ echo "memory allocator. It also has the advantage of providing memory" +$ echo "allocation statistics, if you choose to enable them." +$ bool_dflt = "n" +$ IF F$TYPE(usemymalloc) .nes. "" +$ then +$ if usemymalloc .or. usemymalloc .eqs. "define" then bool_dflt = "y" +$ endif +$ rp = "Do you wish to attempt to use the malloc that comes with ''package'? [''bool_dflt'] " $ GOSUB myread -$ IF ans .eqs. "" THEN ans = dflt -$ IF ans -$ THEN mymalloc := Y -$ ELSE mymalloc := N -$ ENDIF +$ mymalloc = ans $ IF mymalloc $ THEN $ IF use_debugging_perl $ THEN $ echo "" -$ echo "Perl can keep statistics on memory usage if you choose to use -$ echo "them. This is useful for debugging, but does have some -$ echo "performance overhead. -$ dflt = "n" -$ rp = "Do you want the debugging memory allocator? [''dflt'] " +$ echo "Perl can keep statistics on memory usage if you choose to use" +$ echo "them. This is useful for debugging, but does have some" +$ echo "performance overhead." +$ bool_dflt = "n" +$ rp = "Do you want the debugging memory allocator? [''bool_dflt'] " $ gosub myread -$ if ans.eqs."" then ans="''dflt'" -$ use_debugmalloc = f$extract(0, 1, f$edit(ans, "COLLAPSE,UPCASE")) +$ use_debugmalloc = ans $ ENDIF $ ! Check which memory allocator we want $ echo "" -$ echo "There are currently three different memory allocators: the -$ echo "default (which is a pretty good general-purpose memory manager), -$ echo "the TWO_POT allocator (which is optimized to save memory for -$ echo "larger allocations), and PACK_MALLOC (which is optimized to save -$ echo "memory for smaller allocations). They're all good, but if your -$ echo "usage tends towards larger chunks use TWO_POT, otherwise use +$ echo "There are currently three different memory allocators: the" +$ echo "default (which is a pretty good general-purpose memory manager)," +$ echo "the TWO_POT allocator (which is optimized to save memory for" +$ echo "larger allocations), and PACK_MALLOC (which is optimized to save" +$ echo "memory for smaller allocations). They're all good, but if your" +$ echo "usage tends towards larger chunks use TWO_POT, otherwise use" $ echo "PACK_MALLOC." $ dflt = "DEFAULT" $ rp = "Memory allocator (DEFAULT, TWO_POT, PACK_MALLOC) [''dflt'] " $ GOSUB myread -$ if ans.eqs."" then ans = "''dflt'" $ if ans.eqs."TWO_POT" then use_two_pot_malloc = "Y" $ if ans.eqs."PACK_MALLOC" then use_pack_malloc = "Y" $ ENDIF $! +$ known_extensions = "" +$ xxx = "" +$ OPEN/READ CONFIG 'manifestfound' +$ext_loop: +$ READ/END_OF_FILE=end_ext/ERROR=end_ext CONFIG line +$ IF F$EXTRACT(0,4,line) .NES. "ext/" .AND. - + F$EXTRACT(0,8,line) .NES. "vms/ext/" THEN goto ext_loop +$ line = F$EDIT(line,"COMPRESS") +$ line = F$ELEMENT(0," ",line) +$ line_len = F$LENGTH(line) +$ IF F$EXTRACT(line_len - 12,12,line) .NES. "/Makefile.PL" THEN goto ext_loop +$ IF F$EXTRACT(0,4,line) .EQS. "ext/" THEN - + xxx = F$EXTRACT(4,line_len - 16,line) +$ IF xxx .EQS. "DynaLoader" THEN goto ext_loop ! omit +$ IF xxx .EQS. "SDBM_File/sdbm" THEN goto ext_loop ! sub extension - omit +$ IF xxx .EQS. "Devel/PPPort/harness" THEN goto ext_loop ! sub extension - omit +$ IF F$EXTRACT(0,8,line) .EQS. "vms/ext/" THEN - + xxx = "VMS/" + F$EXTRACT(8,line_len - 20,line) +$ known_extensions = known_extensions + " ''xxx'" +$ goto ext_loop +$end_ext: +$ close CONFIG +$ DELETE/SYMBOL xxx +$ known_extensions = F$EDIT(known_extensions,"TRIM,COMPRESS") +$ dflt = known_extensions +$ IF ccname .NES. "DEC" .AND. ccname .NES. "CXX" +$ THEN +$ dflt = dflt - "POSIX" ! not with VAX C or GCC +$ ENDIF +$ dflt = dflt - "ByteLoader" ! needs to be ported +$ dflt = dflt - "DB_File" ! needs to be ported +$ dflt = dflt - "GDBM_File" ! needs porting/special library +$ dflt = dflt - "IPC/SysV" ! needs to be ported +$ dflt = dflt - "NDBM_File" ! needs porting/special library +$ dflt = dflt - "ODBM_File" ! needs porting/special library +$ dflt = dflt - "Sys/Syslog" ! needs porting/special library "GDBM_File macro LOG_DEBUG" +$ IF .NOT. Has_socketshr .AND. .NOT. Has_Dec_C_Sockets +$ THEN +$ dflt = dflt - "Socket" ! optional on VMS +$ ENDIF +$ IF .NOT. use_ithreads THEN dflt = dflt - "threads/shared" +$ IF .NOT. use_ithreads THEN dflt = dflt - "threads" +$ dflt = F$EDIT(dflt,"TRIM,COMPRESS") +$! $! Ask for their default list of extensions to build $ echo "" -$ echo "It's time to specify which modules you want to build into -$ echo "perl. Most of these are standard and should be chosen, though -$ echo "you might, for example, want to build GDBM_File instead of -$ echo "SDBM_File if you have the GDBM library built on your machine. -$ echo "Whatever you do, make sure the re module is first or things will -$ echo "break badly" -$ echo " +$ echo "It is time to specify which modules you want to build into" +$ echo "perl. Most of these are standard and should be chosen, though" +$ echo "you might, for example, want to build GDBM_File instead of" +$ echo "SDBM_File if you have the GDBM library built on your machine." +$ echo "" $ echo "Which modules do you want to build into perl?" -$! dflt = "Fcntl Errno File::Glob IO Opcode Byteloader Devel::Peek Devel::DProf Data::Dumper attrs re VMS::Stdio VMS::DCLsym B SDBM_File" -$ dflt = "re Fcntl Errno File::Glob IO Opcode Devel::Peek Devel::DProf Data::Dumper attrs VMS::Stdio VMS::DCLsym B SDBM_File Storable Thread Sys::Hostname" -$ if Using_Dec_C -$ THEN -$ dflt = dflt + " POSIX" -$ ENDIF $ rp = "[''dflt'] " $ GOSUB myread -$ if ans.eqs."" then ans = "''dflt'" -$ a = "" -$ j = 0 -$ xloop1: -$ x = f$elem(j," ",ans) -$ j = j + 1 -$ if x .eqs. " " then goto exloop1 -$ xloop2: -$ k = f$locate("::",x) -$ if k .ge. f$len(x) then goto exloop2 -$ x = f$extract(0,k,x) + "/" + f$extract(k+2,f$len(x)-2,x) -$ goto xloop2 -$ exloop2: -$ a = a + " " + x -$ goto xloop1 -$ exloop1: -$ ans = f$edit(a,"trim") -$! -$ a = "" -$ j = 0 -$ xloop3: -$ x = f$elem(j," ",dflt) -$ j = j + 1 -$ if x .eqs. " " then goto exloop3 -$ xloop4: -$ k = f$locate("::",x) -$ if k .ge. f$len(x) then goto exloop4 -$ x = f$extract(0,k,x) + "/" + f$extract(k+2,f$len(x)-2,x) -$ goto xloop4 -$ exloop4: -$ a = a + " " + x -$ goto xloop3 -$ exloop3: -$ dflt = f$edit(a,"trim") -$! -$ extensions = "''ans'" -$ known_extensions = "''dflt'" +$ extensions = F$EDIT(ans,"TRIM,COMPRESS") $! $! %Config-I-VMS, determine build/make utility here (make gmake mmk mms) $ echo "" @@ -2429,6 +2609,7 @@ $ ENDIF $Reenable_messages_build: $ SET MESSAGE 'messages' $ SET ON +$ on control_y then goto clean_up $ n = n + 1 $ IF (n .LT. max_build) THEN GOTO Build_probe $! @@ -2447,18 +2628,20 @@ $ ELSE build = ans $ ENDIF $ ELSE $ TYPE SYS$INPUT: +$ DECK %Config-E-VMS, ERROR: Well this looks pretty serious. Perl5 cannot be compiled without a "make" utility of some sort and after checking my "builders" list I cannot find the symbol or command you use on your system to compile programs. +$ EOD $ READ SYS$COMMAND/PROMPT="Which ""MMS"" do you use? " ans $ ans = F$EDIT(ans,"TRIM, COMPRESS") $ ans = F$EXTRACT(0,F$LOCATE(" ",ans),ans) !throw out "-f Makefile." here $ IF (ans .EQS. "") $ THEN build = dflt -$ echo "I don't know where 'make' is, and my life depends on it." +$ echo "I do not know where ""make"" is, and my life depends on it." $ echo "Go find a make program or fix your DCL$PATH setting!" $ echo "ABORTING..." $ SET DEFAULT 'vms_default_directory_name' !be kind rewind @@ -2473,13 +2656,17 @@ $ DELETE/NOLOG Makefile.; $ GOTO Beyond_open $Open_error: $ TYPE SYS$INPUT: +$ DECK There seems to be trouble. I just tried to create a file in +$ EOD $ echo4 'F$ENVIRONMENT("DEFAULT")' $ TYPE SYS$INPUT: +$ DECK but was unsuccessful. I am stopping now. Please check that directories' PROTECTION bits. I will leave you in the directory where you started Configure.com +$ EOD $ echo4 "ABORTING..." $ GOTO Clean_up $ STOP @@ -2491,8 +2678,14 @@ $ make = F$EDIT(build,"UPCASE") $! $!: locate the preferred pager for this system $!pagers = "most|more|less|type/page" -$!rp="What pager is used on your system? [''dflt'] " -$ pager="most" +$ dflt = "type/page" +$! assume that the presence of a most symbol indicates the presence +$! of the pager. +$ IF F$TYPE(most) .EQS. "STRING" THEN dflt = "most" +$ IF F$TYPE(pager) .EQS. "STRING" THEN dflt = pager +$ rp="What pager is used on your system? [''dflt'] " +$ GOSUB myread +$ pager = ans $! $! update [.vms]config.vms here $! @@ -2512,22 +2705,22 @@ $ DEFmakefile = "Makefile." !wrt DEF dir (?) $ Makefile_SH = "Makefile.in" $ ENDIF $! -$ IF macros.NES."" -$ THEN +$ IF macros .NES. "" +$ THEN $ tmp = F$LENGTH(macros) $ macros = F$EXTRACT(0,(tmp-1),macros) !miss trailing comma $ macros = "/macro=(" + macros + ")" $ ENDIF $! Build up the extra C flags $! -$ if use_ieee_math -$ then +$ IF use_ieee_math +$ THEN $ extra_flags = "''extra_flags'" + "/float=ieee/ieee=denorm_results" -$ endif -$ if be_case_sensitive -$ then +$ ENDIF +$ IF be_case_sensitive +$ THEN $ extra_flags = "''extra_flags'" + "/Names=As_Is" -$ endif +$ ENDIF $ extra_flags = "''extra_flags'" + "''user_c_flags'" $! $ min_pgflquota = "100000" @@ -2545,6 +2738,37 @@ $ GOTO Clean_up $ ENDIF $ ENDIF $! +$! PerlIO abstraction +$! +$ bool_dflt = "y" +$ IF F$TYPE(useperlio) .NES. "" +$ then +$ if f$extract(0,1,f$edit(useperlio,"collapse,upcase")) .eqs. "N" .or. useperlio .eqs. "undef" then bool_dflt = "n" +$ endif +$ IF .NOT. silent +$ THEN +$ echo "Previous versions of ''package' used the standard IO mechanisms as" +$ TYPE SYS$INPUT: +$ DECK +defined in . Versions 5.003_02 and later of perl allow +alternate IO mechanisms via the PerlIO abstraction layer, but the +stdio mechanism is still available if needed. The abstraction layer +can use AT&T's sfio (if you already have sfio installed) or regular stdio. +Using PerlIO with sfio may cause problems with some extension modules. + +$ EOD +$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'." +$ ENDIF +$ rp = "Use the PerlIO abstraction layer? [''bool_dflt'] " +$ GOSUB myread +$ IF ans +$ THEN +$ useperlio = "define" +$ ELSE +$ echo "Ok, doing things the stdio way." +$ useperlio = "undef" +$ ENDIF +$! $ echo "" $ echo4 "Checking the C run-time library." $! @@ -2555,7 +2779,6 @@ $! - use built config.sh to take config_h.SH -> config.h $! - also take vms/descrip_mms.template -> descrip.mms (VMS Makefile) $! vms/Makefile.in -> Makefile. (VMS GNU Makefile?) $! vms/Makefile.SH -> Makefile. (VMS GNU Makefile?) -$! - build Build_Ext.Com extension builder procedure. $! $! Note for folks from other platforms changing things in here: $! @@ -2604,11 +2827,11 @@ $ vms_ver = F$EXTRACT(1,3, osvers) $ IF F$LENGTH(Mcc) .EQ. 0 THEN Mcc := "cc" $ MCC = f$edit(mcc, "UPCASE") $ C_Compiler_Replace := "CC=CC=''Mcc'''ccflags'" -$ IF Using_Dec_C +$ IF ccname .EQS. "DEC" $ THEN $ Checkcc := "''Mcc'/prefix=all" $ ELSE -$ IF using_cxx +$ IF ccname .EQS. "CXX" $ THEN $ Checkcc := cxx $ ELSE @@ -2635,12 +2858,33 @@ $ THEN $ use64bitint = "define" $ uselargefiles = "define" $ uselongdouble = "define" +$ alignbytes="16" $ usemorebits = "define" +$ ivdformat="""Ld""" +$ uvuformat="""Lu""" +$ uvoformat="""Lo""" +$ uvxformat="""Lx""" +$ uvXUformat="""LX""" $ ELSE $ use64bitint = "undef" $ uselargefiles = "undef" $ uselongdouble = "undef" $ usemorebits = "undef" +$ ivdformat="""ld""" +$ uvuformat="""lu""" +$ uvoformat="""lo""" +$ uvxformat="""lx""" +$ uvXUformat="""lX""" +$ ENDIF +$ IF uselongdouble .OR. uselongdouble .EQS. "define" +$ THEN +$ nveformat="""Le""" +$ nvfformat="""Lf""" +$ nvgformat="""Lg""" +$ ELSE +$ nveformat="""e""" +$ nvfformat="""f""" +$ nvgformat="""g""" $ ENDIF $ IF use64bitall .OR. use64bitall .EQS. "define" $ THEN @@ -2649,11 +2893,12 @@ $ ELSE $ use64bitall = "undef" $ ENDIF $! -$ usemymalloc=mymalloc +$ usemymalloc = "undef" +$ if mymalloc then usemymalloc = "define" $! $ perl_cc=Mcc $! -$ IF (sharedperl .AND. F$GETSYI("HW_MODEL") .GE. 1024) +$ IF (sharedperl .AND. archname .EQS. "VMS_AXP") $ THEN $ obj_ext=".abj" $ so="axe" @@ -2669,9 +2914,9 @@ $ lib_ext=".olb" $ ENDIF $ dlobj="dl_vms''obj_ext'" $! -$ cppstdin="''perl_cc'/noobj/preprocess=sys$output sys$input" +$ cppstdin="''perl_cc'/noobj/comments=as_is/preprocess=sys$output sys$input" $ cppminus=" " -$ cpprun="''perl_cc'/noobj/preprocess=sys$output sys$input" +$ cpprun="''perl_cc'/noobj/comments=as_is/preprocess=sys$output sys$input" $ cpplast=" " $! $ timetype="time_t" @@ -2684,7 +2929,8 @@ $ ELSE d_mymalloc="undef" $ ENDIF $! $ usedl="define" -$ startperl="""$ perl 'f$env(\""procedure\"")' 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' !\n$ exit++ + ++$status != 0 and $exit = $status = undef;""" +$ startperl="""$ perl 'f$env(\""procedure\"")' \""'"+"'p1'\"" \""'"+"'p2'\"" \""'"+"'p3'\"" \""'"+"'p4'\"" \""'"+"'p5'\"" \""'"+"'p6'\"" \""'"+"'p7'\"" \""'"+"'p8'\""!\n" +$ startperl=startperl + "$ exit++ + ++$status!=0 and $exit=$status=undef; while($#ARGV != -1 and $ARGV[$#ARGV] eq '"+"'){pop @ARGV;}""" $! $ IF ((Use_Threads) .AND. (vms_ver .LES. "6.2")) $ THEN @@ -2692,7 +2938,7 @@ $ libs="SYS$SHARE:CMA$LIB_SHR.EXE/SHARE SYS$SHARE:CMA$RTL.EXE/SHARE SYS$SHARE: $ ELSE $ libs=" " $ ENDIF -$ IF Using_Dec_C +$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX" $ THEN $ libc="(DECCRTL)" $ ELSE @@ -2717,6 +2963,7 @@ $ d_PRIgldbl = "define" $ d_PRIu64 = "define" $ d_PRIo64 = "define" $ d_PRIx64 = "define" +$ d_PRIXU64 = "define" $ sPRId64 = """Ld""" $ sPRIEUldbl = """LE""" $ sPRIFUldbl = """LF""" @@ -2734,6 +2981,7 @@ $ quadtype = "long long" $ uquadtype = "unsigned long long" $ quadkind = "QUAD_IS_LONG_LONG" $ d_frexpl = "define" +$ d_isnan = "define" $ d_isnanl = "define" $ d_modfl = "define" $ ELSE @@ -2765,6 +3013,7 @@ $ quadtype = "long" $ uquadtype = "unsigned long" $ quadkind = "QUAD_IS_LONG" $ d_frexpl = "undef" +$ d_isnan = "undef" $ d_isnanl = "undef" $ d_modfl = "undef" $ ENDIF @@ -2809,7 +3058,7 @@ $ CS := "close CONFIG" $ DS := "delete/nolog/noconfirm []try.*;*" $ Needs_Opt := N $ good_compile = %X10B90001 -$ IF Using_Gnu_C +$ IF ccname .EQS. "GCC" $ THEN $ open/write OPTCHAN []try.opt $ write OPTCHAN "Gnu_CC:[000000]gcclib.olb/library" @@ -2818,7 +3067,7 @@ $ Close OPTCHAN $ Needs_Opt := Y $ good_compile = %X10000001 $ ENDIF -$ IF using_cxx +$ IF ccname .EQS. "CXX" $ THEN $ good_compile = %X15F60001 $ ENDIF @@ -2832,14 +3081,14 @@ $! $type_size_check: $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" $ WS "printf(""%d\n"", sizeof(''tmp'));" -$ WS "exit(0); +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB compile @@ -2849,15 +3098,15 @@ $!: locate header file $findhdr: $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ WS "#include <''tmp'>" -$ WS "int main() +$ WS "int main()" $ WS "{" $ WS "printf(""define\n"");" -$ WS "exit(0); +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB link_ok @@ -2944,18 +3193,18 @@ $! $! Check for __STDC__ $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "#ifdef __STDC__ -$ WS "printf(""42\n""); -$ WS "#else -$ WS "printf(""1\n""); -$ WS "#endif -$ WS "exit(0); +$ WS "#ifdef __STDC__" +$ WS "printf(""42\n"");" +$ WS "#else" +$ WS "printf(""1\n"");" +$ WS "#endif" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB compile @@ -2977,14 +3226,14 @@ $! $! Check for long double size $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "printf(""%d\n"", sizeof(long double)); -$ WS "exit(0); +$ WS "printf(""%d\n"", sizeof(long double));" +$ WS "exit(0);" $ WS "}" $ CS $ echo4 "Checking to see if you have long double..." @@ -3005,14 +3254,14 @@ $ ENDIF $! $!: check for long long $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "printf(""%d\n"", sizeof(long long)); -$ WS "exit(0); +$ WS "printf(""%d\n"", sizeof(long long));" +$ WS "exit(0);" $ WS "}" $ CS $ echo4 "Checking to see if you have long long..." @@ -3035,15 +3284,15 @@ $! Check the prototype for getgid $! $ echo "Looking for the type for group ids returned by getgid()." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "gid_t foo; -$ WS "exit(0); +$ WS "gid_t foo;" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB compile_ok @@ -3061,15 +3310,15 @@ $! Check to see if we've got dev_t $! $ echo "Looking for the type for dev." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "dev_t foo; -$ WS "exit(0); +$ WS "dev_t foo;" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB compile_ok @@ -3113,26 +3362,26 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ IF i_unistd .EQS. "define" THEN WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ IF i_unistd .EQS. "define" THEN WS "#include " $ IF Has_Socketshr $ THEN $ WS "#include " $ ELSE -$ WS "#include -$ WS "#include +$ WS "#include " +$ WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "fd_set *foo; -$ WS "int bar; -$ WS "foo = NULL; -$ WS "bar = select(2, foo, foo, foo, NULL); -$ WS "exit(0); +$ WS "fd_set *foo;" +$ WS "int bar;" +$ WS "foo = NULL;" +$ WS "bar = select(2, foo, foo, foo, NULL);" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB compile_ok @@ -3154,25 +3403,25 @@ $! Check to see if fd_set exists $! $ echo "Checking to see how well your C compiler handles fd_set and friends ..." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " $ IF Has_Socketshr $ THEN $ WS "#include " $ ENDIF $ IF Has_Dec_C_Sockets $ THEN -$ WS "#include -$ WS "#include +$ WS "#include " +$ WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "fd_set *foo; -$ WS "int bar; -$ WS "exit(0); +$ WS "fd_set *foo;" +$ WS "int bar;" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB compile_ok @@ -3196,19 +3445,19 @@ $! Check to see if off64_t exists $! $ echo4 "Checking to see if you have off64_t..." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "#''i_inttypes IIH -$ WS "#ifdef IIH -$ WS "#include -$ WS "#endif -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "#''i_inttypes' IIH" +$ WS "#ifdef IIH" +$ WS "#include " +$ WS "#endif" +$ WS "int main()" $ WS "{" -$ WS "off64_t bar; -$ WS "exit(0); +$ WS "off64_t bar;" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB compile_ok @@ -3225,19 +3474,19 @@ $! Check to see if fpos64_t exists $! $ echo4 "Checking to see if you have fpos64_t..." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "#''i_inttypes IIH -$ WS "#ifdef IIH -$ WS "#include -$ WS "#endif -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "#''i_inttypes' IIH" +$ WS "#ifdef IIH" +$ WS "#include " +$ WS "#endif" +$ WS "int main()" $ WS "{" -$ WS "fpos64_t bar; -$ WS "exit(0); +$ WS "fpos64_t bar;" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB compile_ok @@ -3254,19 +3503,19 @@ $! Check to see if int64_t exists $! $ echo4 "Checking to see if you have int64_t..." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "#''i_inttypes IIH -$ WS "#ifdef IIH -$ WS "#include -$ WS "#endif -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "#''i_inttypes' IIH" +$ WS "#ifdef IIH" +$ WS "#include " +$ WS "#endif" +$ WS "int main()" $ WS "{" -$ WS "int64_t bar; -$ WS "exit(0); +$ WS "int64_t bar;" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB compile_ok @@ -3291,16 +3540,16 @@ $! Check for h_errno $! $ echo4 "Checking to see if you have h_errno..." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ IF i_unistd .EQS. "define" THEN WS "#include -$ IF i_netdb .EQS. "define" THEN WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ IF i_unistd .EQS. "define" THEN WS "#include " +$ IF i_netdb .EQS. "define" THEN WS "#include " +$ WS "int main()" $ WS "{" -$ WS "h_errno = 3; -$ WS "exit(0); +$ WS "h_errno = 3;" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB link_ok @@ -3318,25 +3567,25 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " $ IF Has_Socketshr $ THEN $ WS "#include " $ ELSE -$ WS "#include -$ WS "#include +$ WS "#include " +$ WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "char name[100]; -$ WS "int bar, baz; -$ WS "bar = 100; -$ WS "baz = gethostname(name, bar); -$ WS "exit(0); +$ WS "char name[100];" +$ WS "int bar, baz;" +$ WS "bar = 100;" +$ WS "baz = gethostname(name, bar);" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB link_ok @@ -3409,33 +3658,81 @@ $! $! Check for fcntl $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "fcntl(1,2,3); -$ WS "exit(0); +$ WS "fcntl(1,2,3);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "fcntl" $ GOSUB inlibc $ d_fcntl = tmp $! +$! Check for fcntl locking capability +$! +$ echo4 "Checking if fcntl-based file locking works... " +$ tmp = "undef" +$ IF d_fcntl .EQS. "define" +$ THEN +$ OS +$ WS "#include " +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "int main() {" +$ WS "#if defined(F_SETLK) && defined(F_SETLKW)" +$ WS " struct flock flock;" +$ WS " int retval, fd;" +$ WS " fd = open(""try.c"", O_RDONLY);" +$ WS " flock.l_type = F_RDLCK;" +$ WS " flock.l_whence = SEEK_SET;" +$ WS " flock.l_start = flock.l_len = 0;" +$ WS " retval = fcntl(fd, F_SETLK, &flock);" +$ WS " close(fd);" +$ WS " (retval < 0 ? printf(""undef\n"") : printf(""define\n""));" +$ WS "#else" +$ WS " printf(""undef\n"");" +$ WS "#endif" +$ WS "}" +$ CS +$ GOSUB link_ok +$ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link +$ THEN +$ GOSUB just_mcr_it +$ IF tmp .EQS. "define" +$ THEN +$ echo4 "Yes, it seems to work." +$ ELSE +$ echo4 "Nope, it didn't work." +$ ENDIF +$ ELSE +$ echo4 "I'm unable to compile the test program, so I'll assume not." +$ tmp = "undef" +$ ENDIF +$ ELSE +$ echo4 "Nope, since you don't even have fcntl()." +$ ENDIF +$ d_fcntl_can_lock = tmp +$! $! Check for memchr $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "char * place; -$ WS "place = memchr(""foo"", 47, 3) -$ WS "exit(0); +$ WS "char * place;" +$ WS "place = memchr(""foo"", 47, 3);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "memchr" @@ -3445,15 +3742,15 @@ $! $! Check for strtoull $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "unsigned __int64 result; -$ WS "result = strtoull(""123123"", NULL, 10); -$ WS "exit(0); +$ WS "unsigned __int64 result;" +$ WS "result = strtoull(""123123"", NULL, 10);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "strtoull" @@ -3463,15 +3760,15 @@ $! $! Check for strtouq $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "unsigned __int64 result; -$ WS "result = strtouq(""123123"", NULL, 10); -$ WS "exit(0); +$ WS "unsigned __int64 result;" +$ WS "result = strtouq(""123123"", NULL, 10);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "strtouq" @@ -3481,33 +3778,69 @@ $! $! Check for strtoll $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "__int64 result; -$ WS "result = strtoll(""123123"", NULL, 10); -$ WS "exit(0); +$ WS "__int64 result;" +$ WS "result = strtoll(""123123"", NULL, 10);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "strtoll" $ GOSUB inlibc $ d_strtoll = tmp $! +$! Check for strtoq +$! +$ OS +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" +$ WS "{" +$ WS "__int64 result;" +$ WS "result = strtoq(""123123"", NULL, 10);" +$ WS "exit(0);" +$ WS "}" +$ CS +$ tmp = "strtoq" +$ GOSUB inlibc +$ d_strtoq = tmp +$! +$! Check for strtoq +$! +$ OS +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" +$ WS "{" +$ WS "__int64 result;" +$ WS "result = strtoq(""123123"", NULL, 10);" +$ WS "exit(0);" +$ WS "}" +$ CS +$ tmp = "strtoq" +$ GOSUB inlibc +$ d_strtoq = tmp +$! $! Check for strtold $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "long double result; -$ WS "result = strtold(""123123"", NULL, 10); -$ WS "exit(0); +$ WS "long double result;" +$ WS "result = strtold(""123123"", NULL, 10);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "strtold" @@ -3517,15 +3850,15 @@ $! $! Check for atoll $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS " __int64 result; -$ WS "result = atoll(""123123""); -$ WS "exit(0); +$ WS " __int64 result;" +$ WS "result = atoll(""123123"");" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "atoll" @@ -3535,15 +3868,15 @@ $! $! Check for atolf $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "long double -$ WS "result = atolf(""123123""); -$ WS "exit(0); +$ WS "long double" +$ WS "result = atolf(""123123"");" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "atolf" @@ -3553,14 +3886,14 @@ $! $! Check for access $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "access("foo", F_OK); -$ WS "exit(0); +$ WS "access(""foo"", F_OK);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "acess" @@ -3570,16 +3903,16 @@ $! $! Check for bzero $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "char foo[10]; -$ WS "bzero(foo, 10); -$ WS "exit(0); +$ WS "char foo[10];" +$ WS "bzero(foo, 10);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "bzero" @@ -3589,16 +3922,16 @@ $! $! Check for bcopy $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "char foo[10], bar[10]; -$ WS "bcopy(""foo"", bar, 3); -$ WS "exit(0); +$ WS "char foo[10], bar[10];" +$ WS "bcopy(""foo"", bar, 3);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "bcopy" @@ -3608,14 +3941,14 @@ $! $! Check for mkstemp $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "mkstemp(""foo""); -$ WS "exit(0); +$ WS "mkstemp(""foo"");" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "mkstemp" @@ -3625,68 +3958,31 @@ $! $! Check for mkstemps $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "mkstemps(""foo"", 1); -$ WS "exit(0); +$ WS "mkstemps(""foo"", 1);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "mkstemps" $ GOSUB inlibc $ d_mkstemps = tmp $! -$! Check for iconv -$! -$ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "int main() -$ WS "{" -$ WS " iconv_t cd = (iconv_t)0;" -$ WS " char *inbuf, *outbuf;" -$ WS " size_t inleft, outleft;" -$ WS " iconv(cd, &inbuf, &inleft, &outbuf, &outleft);" -$ WS "exit(0); -$ WS "}" -$ CS -$ GOSUB link_ok -$ IF compile_status .ne. good_compile -$ THEN -$ d_iconv="undef" -$ i_iconv="undef" -$ ELSE -$ IF link_status .ne. good_link -$ THEN -$ d_iconv="undef" -$ i_iconv="undef" -$ ELSE -$ d_iconv="define" -$ i_iconv="define" -$ ENDIF -$ ENDIF -$ IF i_iconv .eqs. "define" -$ THEN echo4 " found." -$ ELSE echo4 " NOT found." -$ ENDIF -$! $! Check for mkdtemp $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "mkdtemp(""foo""); -$ WS "exit(0); +$ WS "mkdtemp(""foo"");" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "mkdtemp" @@ -3696,34 +3992,71 @@ $! $! Check for setvbuf $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "FILE *foo; -$ WS "char Buffer[99]; -$ WS "foo = fopen(""foo"", ""r""); -$ WS "setvbuf(foo, Buffer, 0, 0); -$ WS "exit(0); +$ WS "FILE *foo;" +$ WS "char Buffer[99];" +$ WS "foo = fopen(""foo"", ""r"");" +$ WS "setvbuf(foo, Buffer, 0, 0);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "setvbuf" $ GOSUB inlibc $ d_setvbuf = tmp $! +$! see if sfio.h is available +$! see if sfio library is available +$! Ok, but do we want to use it. +$! IF F$TYPE(usesfio) .EQS. "" THEN usesfio = "undef" +$! IF val .EQS. "define" +$! THEN +$! IF usesfio .EQS. "define" +$! THEN dflt = "y" +$! ELSE dflt = "n" +$! ENDIF +$! echo "''package' can use the sfio library, but it is experimental." +$! IF useperlio .EQS. "undef" +$! THEN +$! echo "For sfio also the PerlIO abstraction layer is needed." +$! echo "Earlier you said you would not want that." +$! ENDIF +$! rp="You seem to have sfio available, do you want to try using it? [''dflt'] " +$! GOSUB myread +$! IF ans .EQS. "" THEN ans = dflt +$! IF ans +$! THEN +$! echo "Ok, turning on both sfio and PerlIO, then." +$! useperlio="define" +$! val="define" +$! ELSE +$! echo "Ok, avoiding sfio this time. I'll use stdio instead." +$! val="undef" +$! ENDIF +$! ELSE +$! IF usesfio .EQS. "define" +$! THEN +$! echo4 "Sorry, cannot find sfio on this machine." +$! echo4 "Ignoring your setting of usesfio=''usesfio'." +$! val="undef" +$! ENDIF +$! ENDIF +$! $! Check for setenv $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "setenv(""FOO"", ""BAR"", 0); -$ WS "exit(0); +$ WS "setenv(""FOO"", ""BAR"", 0);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "setenv" @@ -3733,14 +4066,14 @@ $! $! Check for setproctitle $! $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "setproctitle(""%s"", ""FOO""); -$ WS "exit(0); +$ WS "setproctitle(""%s"", ""FOO"");" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "setproctitle" @@ -3774,18 +4107,18 @@ $! $ IF Has_Dec_C_Sockets .or. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "endhostent(); -$ WS "exit(0); +$ WS "endhostent();" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "endhostent" @@ -3800,13 +4133,13 @@ $! $ IF Has_Dec_C_Sockets .or. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF $ WS "int main()" $ WS "{" @@ -3826,18 +4159,18 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "endprotoent(); -$ WS "exit(0); +$ WS "endprotoent();" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "endprotoent" @@ -3852,18 +4185,18 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "endservent(); -$ WS "exit(0); +$ WS "endservent();" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "endservent" @@ -3878,18 +4211,18 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "sethostent(1); -$ WS "exit(0); +$ WS "sethostent(1);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "sethostent" @@ -3904,18 +4237,18 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "setnetent(1); -$ WS "exit(0); +$ WS "setnetent(1);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "setnetent" @@ -3930,18 +4263,18 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "setprotoent(1); -$ WS "exit(0); +$ WS "setprotoent(1);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "setprotoent" @@ -3956,18 +4289,18 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "setservent(1); -$ WS "exit(0); +$ WS "setservent(1);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "setservent" @@ -3982,18 +4315,18 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "gethostent(); -$ WS "exit(0); +$ WS "gethostent();" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "gethostent" @@ -4008,18 +4341,18 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "getnetent(); -$ WS "exit(0); +$ WS "getnetent();" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "getnetent" @@ -4034,18 +4367,18 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "getprotoent(); -$ WS "exit(0); +$ WS "getprotoent();" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "getprotoent" @@ -4060,18 +4393,18 @@ $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "getservent(); -$ WS "exit(0); +$ WS "getservent();" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "getservent" @@ -4087,18 +4420,18 @@ $ IF Has_Dec_C_Sockets .OR. Has_Socketshr $ THEN $ echo4 "Checking to see if you have socklen_t..." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " $ IF Has_Socketshr $ THEN WS "#include " -$ ELSE IF i_netdb .EQS. "define" THEN WS "#include +$ ELSE IF i_netdb .EQS. "define" THEN WS "#include " $ ENDIF -$ WS "int main() +$ WS "int main()" $ WS "{" -$ WS "socklen_t x = 16; -$ WS "exit(0); +$ WS "socklen_t x = 16;" +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB link_ok @@ -4119,15 +4452,15 @@ $! $ IF use_threads $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "pthread_yield(); -$ WS "exit(0); +$ WS "pthread_yield();" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "pthread_yield" @@ -4142,15 +4475,15 @@ $! $ IF use_threads $ THEN $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "sched_yield(); -$ WS "exit(0); +$ WS "sched_yield();" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "sched_yield" @@ -4169,16 +4502,16 @@ $! Check for generic pointer size $! $ echo4 "Checking to see how big your pointers are..." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" -$ WS "int foo; -$ WS "foo = sizeof(char *); -$ WS "printf(""%d\n"", foo); -$ WS "exit(0); +$ WS "int foo;" +$ WS "foo = sizeof(char *);" +$ WS "printf(""%d\n"", foo);" +$ WS "exit(0);" $ WS "}" $ CS $ tmp = "char *" @@ -4199,14 +4532,14 @@ $! Check rand48 and its ilk $! $ echo4 "Looking for a random number function..." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" $ WS "srand48(12L);" -$ WS "exit(0); +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB link_ok @@ -4223,14 +4556,14 @@ $ drand01="random()" $ randseedtype = "unsigned" $ seedfunc = "srandom" $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" $ WS "{" $ WS "srandom(12);" -$ WS "exit(0); +$ WS "exit(0);" $ WS "}" $ CS $ GOSUB link_ok @@ -4238,20 +4571,19 @@ $ IF compile_status .EQ. good_compile .AND. link_status .EQ. good_link $ THEN $ echo4 "OK, found random()." $ ELSE -$ drand01="(((float)rand())/((float)RAND_MAX))" +$ drand01="(((float)rand())*MY_INV_RAND_MAX)" $ randseedtype = "unsigned" $ seedfunc = "srand" $ echo4 "Yick, looks like I have to use rand()." $ ENDIF $ ENDIF -$! $! Done with compiler checks. Clean up. $ IF F$SEARCH("try.c") .NES."" THEN DELETE/NOLOG/NOCONFIRM try.c;* $ IF F$SEARCH("try.obj").NES."" THEN DELETE/NOLOG/NOCONFIRM try.obj;* $ IF F$SEARCH("try.exe").NES."" THEN DELETE/NOLOG/NOCONFIRM try.exe;* $ IF F$SEARCH("try.opt").NES."" THEN DELETE/NOLOG/NOCONFIRM try.opt;* $ IF F$SEARCH("try.out").NES."" THEN DELETE/NOLOG/NOCONFIRM try.out;* -$ IF using_cxx +$ IF ccname .EQS. "CXX" $ THEN $ CALL Cxx_demangler_cleanup $ ENDIF @@ -4259,7 +4591,7 @@ $! $! Some that are compiler or VMS version sensitive $! $! Gnu C stuff -$ IF Using_Gnu_C +$ IF ccname .EQS. "GCC" $ THEN $ d_attribut="define" $ vms_cc_type="gcc" @@ -4269,12 +4601,22 @@ $ d_attribut="undef" $ ENDIF $! $! Dec C >= 5.2 and VMS ver >= 7.0 -$ IF (Using_Dec_C).AND.(F$INTEGER(Dec_C_Version).GE.50200000).AND.(vms_ver .GES. "7.0") +$ IF (ccname .EQS. "DEC") .AND. - + (F$INTEGER(Dec_C_Version).GE.50200000) .AND. (vms_ver .GES. "7.0") $ THEN $ d_bcmp="define" +$ d_getitimer="define" $ d_gettimeod="define" +$ d_mmap="define" +$ d_mprotect="define" +$ d_munmap="define" +$ d_msync="define" +$ d_ualarm="define" $ d_uname="define" +$ d_usleep="define" +$ d_setitimer="define" $ d_sigaction="define" +$ d_sigprocmask="define" $ d_truncate="define" $ d_wait4="define" $ d_index="define" @@ -4284,9 +4626,10 @@ $ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT""," $ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",""USR1"",""USR2"",""SPARE18"",""SPARE19"",""CHLD"",""CONT"",""STOP"",""TSTP""," $ psnwc3="""TTIN"",""TTOU"",""DEBUG"",""SPARE27"",""SPARE28"",""SPARE29"",""SPARE30"",""SPARE31"",""SPARE32"",""RTMIN"",""RTMAX"",0" $ sig_name_init = psnwc1 + psnwc2 + psnwc3 -$ sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 64"","0" +$ sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 64"",0" $ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,64,0" $! perl_sig_num_with_commas=sig_num_init +$ sig_size="36" $ uidtype="uid_t" $ d_pathconf="define" $ d_fpathconf="define" @@ -4294,10 +4637,19 @@ $ d_sysconf="define" $ d_sigsetjmp="define" $ ELSE $ pidtype="unsigned int" -$ d_gettimeod="undef" $ d_bcmp="undef" +$ d_getitimer="undef" +$ d_gettimeod="undef" +$ d_mmap="undef" +$ d_mprotect="undef" +$ d_munmap="undef" +$ d_msync="undef" +$ d_ualarm="undef" $ d_uname="undef" +$ d_usleep="undef" +$ d_setitimer="undef" $ d_sigaction="undef" +$ d_sigprocmask="undef" $ d_truncate="undef" $ d_wait4="undef" $ d_index="undef" @@ -4308,15 +4660,39 @@ $ sig_name_init = psnwc1 + psnwc2 $ sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17"",0" $ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,0" $! perl_sig_num_with_commas=sig_num_init +$ sig_size="19" $ uidtype="unsigned int" $ d_pathconf="undef" $ d_fpathconf="undef" $ d_sysconf="undef" $ d_sigsetjmp="undef" $ ENDIF +$!: see if tzname[] exists +$ OS +$ WS "#include " +$ WS "#include " +$ WS "int main() { extern short tzname[]; printf(""%hd"", tzname[0]); }" +$ CS +$ GOSUB compile_ok +$ IF compile_status .EQ. good_compile +$ THEN +$ d_tzname = "undef" +$ echo4 "tzname[] NOT found." +$ ELSE +$ d_tzname = "define" +$ echo4 "tzname[] found." +$ ENDIF +$ IF F$SEARCH("try.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM try.obj; +$! +$ IF d_gethname .EQS. "undef" .AND. d_uname .EQS. "undef" +$ THEN +$ d_phostname="define" +$ ELSE +$ d_phostname="undef" +$ ENDIF $! $! Dec C alone -$ IF Using_Dec_C +$ IF ccname .EQS. "DEC" $ THEN $ d_mbstowcs="define" $ d_mbtowc="define" @@ -4331,7 +4707,9 @@ $ d_strcoll="define" $ d_strxfrm="define" $ d_wctomb="define" $ i_locale="define" +$ i_langinfo="define" $ d_locconv="define" +$ d_nl_langinfo="define" $ d_setlocale="define" $ vms_cc_type="decc" $ ELSE @@ -4348,9 +4726,13 @@ $ d_strcoll="undef" $ d_strxfrm="undef" $ d_wctomb="undef" $ i_locale="undef" +$ i_langinfo="undef" $ d_locconv="undef" +$ d_nl_langinfo="undef" $ d_setlocale="undef" $ ENDIF +$ d_stdio_ptr_lval_sets_cnt="undef" +$ d_stdio_ptr_lval_nochange_cnt="define" $! $! Sockets? $ if Has_Socketshr .OR. Has_Dec_C_Sockets @@ -4375,7 +4757,7 @@ $ d_gethostprotos="define" $ d_getnetprotos="define" $ d_getprotoprotos="define" $ d_getservprotos="define" -$ IF Using_Dec_C +$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX" $ THEN $ socksizetype="unsigned int" $ ELSE @@ -4457,20 +4839,20 @@ $ tmp = "long" $ GOSUB type_size_check $ longsize = tmp $ ENDIF -$ +$! $ tmp = "''uvtype'" $ GOSUB type_size_check $ uvsize = tmp $ IF use64bitint .OR. use64bitint .EQS. "define" THEN u64size = tmp -$ +$! $ tmp = "''i8type'" $ GOSUB type_size_check $ i8size = tmp -$ +$! $ tmp = "''u8type'" $ GOSUB type_size_check $ u8size = tmp -$ +$! $ tmp = "''i16type'" $ GOSUB type_size_check $ i16size = tmp @@ -4481,11 +4863,11 @@ $ tmp = "short" $ gosub type_size_check $ shortsize = tmp $ ENDIF -$ +$! $ tmp = "''u16type'" $ GOSUB type_size_check $ u16size = tmp -$ +$! $ tmp = "''i32type'" $ GOSUB type_size_check $ i32size = tmp @@ -4496,11 +4878,11 @@ $ tmp = "int" $ gosub type_size_check $ intsize = tmp $ ENDIF -$ +$! $ tmp = "''u32type'" $ gosub type_size_check $ u32size = tmp -$ +$! $ tmp = "''nvtype'" $ GOSUB type_size_check $ nvsize = tmp @@ -4511,20 +4893,20 @@ $ echo "(NV will be ""''nvtype'"", ''nvsize' bytes)" $! $ echo4 "Checking whether your NVs can preserve your UVs..." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() { -$ WS " ''uvtype' k = (''uvtype')~0, l; -$ WS " ''nvtype' d; -$ WS " l = k; -$ WS " d = (''nvtype')l; -$ WS " l = (''uvtype')d; -$ WS " if (l == k) -$ WS " printf(""preserve\n""); -$ WS " exit(0); -$ WS "} +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main() {" +$ WS " ''uvtype' k = (''uvtype')~0, l;" +$ WS " ''nvtype' d;" +$ WS " l = k;" +$ WS " d = (''nvtype')l;" +$ WS " l = (''uvtype')d;" +$ WS " if (l == k)" +$ WS " printf(""preserve\n"");" +$ WS " exit(0);" +$ WS "}" $ CS $ GOSUB compile $ IF tmp .EQS. "preserve" @@ -4537,57 +4919,120 @@ $ d_nv_preserves_uv = "undef" $ echo "No, they can't." $ echo4 "Checking how many bits of your UVs your NVs can preserve..." $ OS -$ WS "#ifdef __DECC -$ WS "#include -$ WS "#endif -$ WS "#include -$ WS "int main() { -$ WS " ''uvtype' u = 0; -$ WS " int n = 8 * ''uvsize'; -$ WS " int i; -$ WS " for (i = 0; i < n; i++) { -$ WS " u = u << 1 | (''uvtype')1; -$ WS " if ((''uvtype')(''nvtype')u != u) -$ WS " break; -$ WS " } -$ WS " printf(""%d\n"", i); -$ WS " exit(0); -$ WS "} +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main() {" +$ WS " ''uvtype' u = 0;" +$ WS " int n = 8 * ''uvsize';" +$ WS " int i;" +$ WS " for (i = 0; i < n; i++) {" +$ WS " u = u << 1 | (''uvtype')1;" +$ WS " if ((''uvtype')(''nvtype')u != u)" +$ WS " break;" +$ WS " }" +$ WS " printf(""%d\n"", i);" +$ WS " exit(0);" +$ WS "}" +$ CS $ GOSUB compile $ d_nv_preserves_uv_bits = tmp $ ENDIF +$! +$ echo4 "Checking whether your kill() uses SYS$FORCEX..." +$ kill_by_sigprc = "undef" +$ OS +$ WS "#include " +$ WS "#include " +$ WS "void handler(int s) { printf(""%d\n"",s); } " +$ WS "main(){" +$ WS " printf(""0"");" +$ WS " signal(1,handler); kill(0,1);" +$ WS "}" +$ CS +$ ON ERROR THEN CONTINUE +$ GOSUB compile +$ IF tmp .NES. "01" +$ THEN +$ echo "Yes, it does." +$ echo4 "Checking whether we can use SYS$SIGPRC instead" +$ OS +$ WS "#include " +$ WS "#include " +$ WS "unsigned long code = 0;" +$ WS "int handler(unsigned long *args) {" +$ WS " code = args[1];" +$ WS " return 1;" +$ WS "}" +$ WS "main() { " +$ WS " int iss, sys$sigprc();" +$ WS " lib$establish(handler);" +$ WS " iss = sys$sigprc(0,0,0x1234);" +$ WS " iss = ((iss&1)==1 && code == 0x1234);" +$ WS " printf(""%d\n"",iss);" +$ WS "}" +$ CS +$ GOSUB compile +$ IF tmp .EQS. "1" +$ THEN +$ echo "looks like we can" +$ kill_by_sigprc = "define" +$! +$! since SIGBUS and SIGSEGV indistinguishable, make them the same here. +$! sigusr1 and sigusr2 show up in VMS6.2 and later +$! +$ if vms_ver .GES. "6.2" +$ then +$ sig_name="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ABRT USR1 USR2"",0" +$ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT"",""FPE"",""KILL"",""BUS"",""SEGV"",""SYS""," +$ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",""USR1"",""USR2"",0" +$ sig_name_init = psnwc1 + psnwc2 +$ sig_num="0 1 2 3 4 5 6 7 8 9 10 10 12 13 14 15 6 16 17"",0" +$ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,10,12,13,14,15,6,16,17,0" +$ sig_size="19" +$ else +$ sig_name="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ABRT"",0" +$ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT"",""FPE"",""KILL"",""BUS"",""SEGV"",""SYS""," +$ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",0" +$ sig_name_init = psnwc1 + psnwc2 +$ sig_num="0 1 2 3 4 5 6 7 8 9 10 10 12 13 14 15 6"",0" +$ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,10,12,13,14,15,6,0" +$ sig_size="17" +$ endif +$ ENDIF +$ ENDIF $ DELETE/SYMBOL tmp $! -$ ivdformat="""ld""" -$ uvuformat="""lu""" -$ uvoformat="""lo""" -$ uvxformat="""lx""" -$! uselongdouble? -$ nveformat="""e""" -$ nvfformat="""f""" -$ nvgformat="""g""" -$! $! Finally the composite ones. All config $! $ myuname="''osname' ''myname' ''osvers' ''F$EDIT(hwname, "TRIM")'" $! -$ IF Using_Dec_C +$ IF ccname .EQS. "DEC" $ THEN -$ ccflags="/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=''obj_ext'/NoList''ccflags'" +$ ccflags="/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=''obj_ext' ''ccflags'" +$ ENDIF +$ i_dirent = "undef" +$ IF ccname .EQS. "CXX" +$ THEN +$ i_dirent = "define" +$ ccflags="/Include=[]/Standard=ANSI/Prefix=All/Obj=''obj_ext' ''ccflags'" $ ENDIF $ IF use_vmsdebug_perl $ THEN -$ optimize="/Debug/NoOpt" +$ optimize="/List/Debug/NoOpt" +$ ldflags="/Debug/Trace/Map" $ dbgprefix = "DBG" $ ELSE -$ optimize= "" +$ optimize= "/NoList" +$ ldflags="/NoTrace/NoMap" $ dbgprefix = "" $ ENDIF $! $! Okay, we've got everything configured. Now go write out a config.sh. $ basename_config_sh = F$PARSE(config_sh,,,"NAME",)+F$PARSE(config_sh,,,"TYPE",) $ echo4 "Creating ''basename_config_sh'..." -$ open/write CONFIG 'config_sh +$ open/write CONFIG 'config_sh' $ WC := write CONFIG $! $! ##BEGIN WRITE NEW CONSTANTS HERE## @@ -4605,10 +5050,13 @@ $ WC "" $ WC "CONFIG='true'" $ WC "Makefile_SH='" + Makefile_SH + "'" $ WC "Mcc='" + Mcc + "'" -$! WC "PERL_SUBVERSION='" + subversion + "'" ! VMS specific to descrip_mms.template -$ WC "PERL_VERSION='" + patchlevel + "'" ! VMS specific to descrip_mms.template +$ WC "PERL_REVISION='" + revision + "'" +$ WC "PERL_VERSION='" + patchlevel + "'" +$ WC "PERL_SUBVERSION='" + subversion + "'" +$ WC "PERL_API_VERSION='" + api_version + "'" +$ WC "PERL_API_SUBVERSION='" + api_subversion + "'" $ WC "alignbytes='" + alignbytes + "'" -$ WC "aphostname='" + "'" +$ WC "aphostname='write sys$output f$edit(f$getsyi(\""SCSNODE\""),\""TRIM,LOWERCASE\"")'" $ WC "ar='" + "'" $ WC "archlib='" + archlib + "'" $ WC "archlibexp='" + archlibexp + "'" @@ -4623,7 +5071,8 @@ $ WC "cc='" + perl_cc + "'" $ WC "cccdlflags='" + cccdlflags + "'" $ WC "ccdlflags='" + ccdlflags + "'" $ WC "ccflags='" + ccflags + "'" -$ WC "ccversion='" + ccversion + "'" ! VMS specific, oddly enough +$ WC "ccname='" + ccname + "'" +$ WC "ccversion='" + ccversion + "'" $ WC "cf_by='" + cf_by + "'" $ WC "cf_email='" + cf_email + "'" $ WC "cf_time='" + cf_time + "'" @@ -4634,13 +5083,18 @@ $ WC "cpplast='" + cpplast + "'" $ WC "cppminus='" + cppminus + "'" $ WC "cpprun='" + cpprun + "'" $ WC "cppstdin='" + cppstdin + "'" -$ WC "crosscompile='undef'" -$ WC "d_Gconvert='my_gconvert(x,n,t,b)'" -$ WC "d_PRId64='" + d_PRId64 + "'" +$ IF use64bitint .OR. use64bitint .EQS. "define" +$ THEN +$! gcvt() does not work for > 16 decimal places; fallback to sprintf +$ WC "d_Gconvert='sprintf((b),""%.*" + (nvgformat-"""") + ",(n),(x))'" +$ ELSE +$ WC "d_Gconvert='my_gconvert(x,n,t,b)'" +$ ENDIF $ WC "d_PRIEldbl='" + d_PRIEUldbl + "'" $ WC "d_PRIFldbl='" + d_PRIFUldbl + "'" $ WC "d_PRIGldbl='" + d_PRIGUldbl + "'" -$ WC "d_PRIX64='" + d_PRIXU64 + "'" +$ WC "d_PRIXU64='" + d_PRIXU64 + "'" +$ WC "d_PRId64='" + d_PRId64 + "'" $ WC "d_PRIeldbl='" + d_PRIeldbl + "'" $ WC "d_PRIfldbl='" + d_PRIfldbl + "'" $ WC "d_PRIgldbl='" + d_PRIgldbl + "'" @@ -4648,6 +5102,7 @@ $ WC "d_PRIo64='" + d_PRIo64 + "'" $ WC "d_PRIu64='" + d_PRIu64 + "'" $ WC "d_PRIx64='" + d_PRIx64 + "'" $ WC "d_SCNfldbl='" + d_SCNfldbl + "'" +$ WC "d__fwalk='undef'" $ WC "d_access='" + d_access + "'" $ WC "d_accessx='undef'" $ WC "d_alarm='define'" @@ -4659,8 +5114,8 @@ $ WC "d_bcmp='" + d_bcmp + "'" $ WC "d_bcopy='" + d_bcopy + "'" $ WC "d_bincompat3='undef'" $ WC "d_bincompat5005='undef'" -$ WC "d_bsdgetpgrp='undef'" $! WC "d_bsdpgrp='undef'" +$ WC "d_bsdgetpgrp='undef'" $ WC "d_bsdsetpgrp='undef'" $ WC "d_bzero='" + d_bzero + "'" $ WC "d_casti32='define'" @@ -4669,13 +5124,16 @@ $ WC "d_charvspr='undef'" $ WC "d_chown='define'" $ WC "d_chroot='undef'" $ WC "d_chsize='undef'" +$ WC "d_class='undef'" $ WC "d_cmsghdr_s='undef'" $ WC "d_const='define'" $ WC "d_crypt='define'" $ WC "d_csh='undef'" $ WC "d_cuserid='define'" $ WC "d_dbl_dig='define'" +$ WC "d_dbminitproto='undef'" $ WC "d_difftime='define'" +$ WC "d_dirfd='undef'" $ WC "d_dirnamlen='define'" $ WC "d_dlerror='undef'" $ WC "d_dlsymun='undef'" @@ -4692,14 +5150,23 @@ $ WC "d_endsent='" + d_endsent + "'" $ WC "d_eofnblk='undef'" $ WC "d_eunice='undef'" $ WC "d_fchmod='undef'" +$ WC "d_fchdir='undef'" $ WC "d_fchown='undef'" $ WC "d_fcntl='" + d_fcntl + "'" +$ WC "d_fcntl_can_lock='" + d_fcntl_can_lock + "'" $ WC "d_fd_set='" + d_fd_set + "'" $ WC "d_fgetpos='define'" +$ WC "d_finite='undef'" +$ WC "d_finitel='undef'" $ WC "d_flexfnam='define'" $ WC "d_flock='undef'" +$ WC "d_flockproto='undef'" $ WC "d_fork='undef'" +$ WC "d_fp_class='undef'" $ WC "d_fpathconf='" + d_fpathconf + "'" +$ WC "d_fpclass='undef'" +$ WC "d_fpclassify='undef'" +$ WC "d_fpclassl='undef'" $ WC "d_fpos64_t='" + d_fpos64_t + "'" $ WC "d_frexpl='" + d_frexpl + "'" $ WC "d_fs_data_s='undef'" @@ -4707,8 +5174,9 @@ $ WC "d_fseeko='undef'" $ WC "d_fsetpos='define'" $ WC "d_fstatfs='undef'" $ WC "d_fstatvfs='undef'" +$ WC "d_fsync='undef'" $ WC "d_ftello='undef'" -$ WC "d_getcwd='undef'" +$ WC "d_getcwd='define'" $ WC "d_getespwnam='undef'" $ WC "d_getfsstat='undef'" $ WC "d_getgrent='define'" @@ -4718,6 +5186,7 @@ $ WC "d_gethbyname='" + d_gethbyname + "'" $ WC "d_gethent='" + d_gethent + "'" $ WC "d_gethname='" + d_gethname + "'" $ WC "d_gethostprotos='" + d_gethostprotos + "'" +$ WC "d_getitimer='" + d_getitimer + "'" $ WC "d_getlogin='define'" $ WC "d_getmnt='undef'" $ WC "d_getmntent='undef'" @@ -4725,6 +5194,7 @@ $ WC "d_getnbyaddr='" + d_getnbyaddr + "'" $ WC "d_getnbyname='" + d_getnbyname + "'" $ WC "d_getnent='" + d_getnent + "'" $ WC "d_getnetprotos='" + d_getnetprotos + "'" +$ WC "d_getpagsz='undef'" $ WC "d_getpbyname='" + d_getpbyname + "'" $ WC "d_getpbynumber='" + d_getpbynumber + "'" $ WC "d_getpent='" + d_getpent + "'" @@ -4746,11 +5216,12 @@ $ WC "d_gnulibc='undef'" $ WC "d_grpasswd='undef'" $ WC "d_hasmntopt='undef'" $ WC "d_htonl='" + d_htonl + "'" -$ WC "d_iconv='" + d_iconv +"'" $ WC "d_index='" + d_index + "'" $ WC "d_inetaton='undef'" $ WC "d_int64_t='" + d_int64_t + "'" $ WC "d_isascii='define'" +$ WC "d_isfinite='undef'" +$ WC "d_isinf='undef'" $ WC "d_isnan='" + d_isnan + "'" $ WC "d_isnanl='" + d_isnanl + "'" $ WC "d_killpg='undef'" @@ -4780,9 +5251,10 @@ $ WC "d_mknod='undef'" $ WC "d_mkstemp='" + d_mkstemp + "'" $ WC "d_mkstemps='" + d_mkstemps + "'" $ WC "d_mktime='" + d_mktime + "'" -$ WC "d_mmap='undef'" +$ WC "d_mmap='" + d_mmap + "'" $ WC "d_modfl='" + d_modfl + "'" -$ WC "d_mprotect='undef'" +$ WC "d_modfl_pow32_bug='undef'" +$ WC "d_mprotect='" + d_mprotect + "'" $ WC "d_msg='undef'" $ WC "d_msg_ctrunc='undef'" $ WC "d_msg_dontroute='undef'" @@ -4790,10 +5262,11 @@ $ WC "d_msg_oob='undef'" $ WC "d_msg_peek='undef'" $ WC "d_msg_proxy='undef'" $ WC "d_msghdr_s='undef'" -$ WC "d_msync='undef'" -$ WC "d_munmap='undef'" +$ WC "d_msync='" + d_msync + "'" +$ WC "d_munmap='" + d_munmap + "'" $ WC "d_mymalloc='" + d_mymalloc + "'" $ WC "d_nice='define'" +$ WC "d_nl_langinfo='" + d_nl_langinfo + "'" $ WC "d_nv_preserves_uv='" + d_nv_preserves_uv + "'" $ WC "d_nv_preserves_uv_bits='" + d_nv_preserves_uv_bits + "'" $ WC "d_off64_t='" + d_off64_t + "'" @@ -4804,9 +5277,11 @@ $ WC "d_open3='define'" $ WC "d_pathconf='" + d_pathconf + "'" $ WC "d_pause='define'" $ WC "d_perl_otherlibdirs='undef'" -$ WC "d_phostname='undef'" +$ WC "d_phostname='" + d_phostname + "'" $ WC "d_pipe='define'" $ WC "d_poll='undef'" +$ WC "d_procselfexe='undef'" +$ WC "d_pthread_atfork='undef'" $ WC "d_pthread_yield='" + d_pthread_yield + "'" $ WC "d_pthreads_created_joinable='" + d_pthreads_created_joinable + "'" $ WC "d_pwage='undef'" @@ -4822,6 +5297,7 @@ $ WC "d_quad='" + d_quad + "'" $ WC "d_readdir='define'" $ WC "d_readlink='undef'" $ WC "d_readv='undef'" +$ WC "d_realpath='undef'" $ WC "d_recvmsg='undef'" $ WC "d_rename='define'" $ WC "d_rewinddir='define'" @@ -4829,6 +5305,7 @@ $ WC "d_rmdir='define'" $ WC "d_safebcpy='undef'" $ WC "d_safemcpy='define'" $ WC "d_sanemcmp='define'" +$ WC "d_sbrkproto='define'" $ WC "d_sched_yield='" + d_sched_yield + "'" $ WC "d_scm_rights='undef'" $ WC "d_seekdir='define'" @@ -4843,6 +5320,7 @@ $ WC "d_seteuid='undef'" $ WC "d_setgrent='undef'" $ WC "d_setgrps='undef'" $ WC "d_sethent='" + d_sethent + "'" +$ WC "d_setitimer='" + d_setitimer + "'" $ WC "d_setlinebuf='undef'" $ WC "d_setlocale='" + d_setlocale + "'" $ WC "d_setnent='" + d_setnent + "'" @@ -4866,18 +5344,27 @@ $ WC "d_sfio='undef'" $ WC "d_shm='undef'" $ WC "d_shmatprototype='undef'" $ WC "d_sigaction='" + d_sigaction + "'" +$ WC "d_sigprocmask='" + d_sigprocmask + "'" $ WC "d_sigsetjmp='" + d_sigsetjmp + "'" +$ WC "d_sockatmark='undef'" +$ WC "d_sockatmarkproto='undef'" $ WC "d_socket='" + d_socket + "'" $ WC "d_socklen_t='" + d_socklen_t + "'" $ WC "d_sockpair='undef'" $ WC "d_socks5_init='undef'" $ WC "d_sqrtl='define'" +$ WC "d_sresgproto='undef'" +$ WC "d_sresgproto='undef'" +$ WC "d_sresproto='undef'" +$ WC "d_sresuproto='undef'" $ WC "d_statblks='undef'" $ WC "d_statfs_f_flags='undef'" $ WC "d_statfs_s='undef'" $ WC "d_statfsflags='undef'" $ WC "d_stdio_cnt_lval='" + d_stdio_cnt_lval + "'" $ WC "d_stdio_ptr_lval='" + d_stdio_ptr_lval + "'" +$ WC "d_stdio_ptr_lval_nochange_cnt='" + d_stdio_ptr_lval_nochange_cnt + "'" +$ WC "d_stdio_ptr_lval_sets_cnt='" + d_stdio_ptr_lval_sets_cnt + "'" $ WC "d_stdio_stream_array='undef'" $ WC "d_stdiobase='" + d_stdiobase + "'" $ WC "d_stdstdio='" + d_stdstdio + "'" @@ -4886,10 +5373,12 @@ $ WC "d_strcoll='" + d_strcoll + "'" $ WC "d_strctcpy='define'" $ WC "d_strerrm='strerror((e),vaxc$errno)'" $ WC "d_strerror='define'" +$ WC "d_strftime='define'" $ WC "d_strtod='define'" $ WC "d_strtol='define'" $ WC "d_strtold='" + d_strtold + "'" $ WC "d_strtoll='" + d_strtoll + "'" +$ WC "d_strtoq='define'" $ WC "d_strtoul='define'" $ WC "d_strtoull='" + d_strtoull + "'" $ WC "d_strtouq='" + d_strtouq + "'" @@ -4897,6 +5386,7 @@ $ WC "d_strxfrm='" + d_strxfrm + "'" $ WC "d_suidsafe='undef'" $ WC "d_symlink='undef'" $ WC "d_syscall='undef'" +$ WC "d_syscallproto='undef'" $ WC "d_sysconf='" + d_sysconf + "'" $ WC "d_syserrlst='undef'" $ WC "d_system='define'" @@ -4906,11 +5396,16 @@ $ WC "d_telldir='define'" $ WC "d_telldirproto='define'" $ WC "d_times='define'" $ WC "d_truncate='" + d_truncate + "'" -$ WC "d_tzname='undef'" +$ WC "d_tzname='" + d_tzname + "'" +$ WC "d_u32align='define'" +$ WC "d_ualarm='" + d_ualarm + "'" $ WC "d_umask='define'" $ WC "d_uname='" + d_uname + "'" $ WC "d_union_semun='undef'" $ WC "d_unlink_all_versions='undef'" +$ WC "d_unordered='undef'" +$ WC "d_usleep='" + d_usleep + "'" +$ WC "d_usleepproto='" + d_usleep + "'" $ WC "d_ustat='undef'" $ WC "d_vendorarch='undef'" $ WC "d_vendorlib='undef'" @@ -4936,12 +5431,23 @@ $ WC "dlobj='" + dlobj + "'" $ WC "dlsrc='dl_vms.c'" $ WC "doublesize='" + doublesize + "'" $ WC "drand01='" + drand01 + "'" -$ WC "dynamic_ext='" + extensions + "'" +$! +$! The extensions symbol may be quite long +$! +$ tmp = "dynamic_ext='" + extensions + "'" +$ WC/symbol tmp +$ DELETE/SYMBOL tmp $ WC "eagain=' '" $ WC "ebcdic='undef'" +$ WC "embedmymalloc='" + usemymalloc + "'" $ WC "eunicefix=':'" $ WC "exe_ext='" + exe_ext + "'" -$ WC "extensions='" + extensions + "'" +$! +$! The extensions symbol may be quite long +$! +$ tmp = "extensions='" + extensions + "'" +$ WC/symbol tmp +$ DELETE/SYMBOL tmp $ WC "fflushNULL='define'" $ WC "fflushall='undef'" $ WC "fpostype='fpos_t'" @@ -4967,14 +5473,16 @@ $ WC "i8size='" + i8size + "'" $ WC "i8type='" + i8type + "'" $ WC "i_arpainet='undef'" $ WC "i_dbm='undef'" -$ WC "i_dirent='undef'" +$ WC "i_dirent='" + i_dirent + "'" $ WC "i_dlfcn='undef'" $ WC "i_fcntl='" + i_fcntl + "'" $ WC "i_float='define'" +$ WC "i_fp='undef'" +$ WC "i_fp_class='undef'" $ WC "i_grp='undef'" -$ WC "i_iconv='" + i_iconv +"'" $ WC "i_ieeefp='undef'" $ WC "i_inttypes='" + i_inttypes + "'" +$ WC "i_langinfo='" + i_langinfo + "'" $ WC "i_libutil='" + i_libutil + "'" $ WC "i_limits='define'" $ WC "i_locale='" + i_locale + "'" @@ -5015,6 +5523,7 @@ $ WC "i_sysparam='undef'" $ WC "i_sysresrc='undef'" $ WC "i_syssecrt='" + i_syssecrt + "'" $ WC "i_sysselct='undef'" +$ WC "i_syssockio='undef'" $ WC "i_sysstat='define'" $ WC "i_sysstatfs='undef'" $ WC "i_sysstatvfs='undef'" @@ -5051,10 +5560,15 @@ $ WC "intsize='" + intsize + "'" $ WC "ivdformat='" + ivdformat + "'" $ WC "ivsize='" + ivsize + "'" $ WC "ivtype='" + ivtype + "'" -$ WC "known_extensions='" + known_extensions + "'" +$! +$! The known_extensions symbol may be quite long +$! +$ tmp = "known_extensions='" + known_extensions + "'" +$ WC/symbol tmp +$ DELETE/SYMBOL tmp $ WC "ld='" + ld + "'" $ WC "lddlflags='/Share'" -$ WC "ldflags='/NoTrace/NoMap'" +$ WC "ldflags='" + ldflags + "'" $ WC "lib_ext='" + lib_ext + "'" $ WC "libc='" + libc + "'" $ WC "libpth='/sys$share /sys$library'" @@ -5069,12 +5583,13 @@ $ WC "make='" + make + "'" $ WC "malloctype='void *'" $ WC "man1ext='rno'" $ WC "man3ext='rno'" -$ WC "mmaptype=' " + "'" +$ WC "mmaptype='void *'" $ WC "modetype='unsigned int'" $ WC "multiarch='undef'" $ WC "mydomain='" + mydomain + "'" $ WC "myhostname='" + myhostname + "'" $ WC "myuname='" + myuname + "'" +$ WC "need_va_copy='undef'" $ WC "netdb_hlen_type='" + netdb_hlen_type + "'" $ WC "netdb_host_type='" + netdb_host_type + "'" $ WC "netdb_name_type='" + netdb_name_type + "'" @@ -5100,6 +5615,8 @@ $ WC "path_sep='|'" $ WC "perl_root='" + perl_root + "'" ! VMS specific $trnlnm() $ WC "perladmin='" + perladmin + "'" $ WC "perllibs='" + perllibs + "'" +$ WC "perl_symbol='" + perl_symbol + "'" ! VMS specific +$ WC "perl_verb='" + perl_verb + "'" ! VMS specific $ WC "pgflquota='" + pgflquota + "'" $ WC "pidtype='" + pidtype + "'" $ WC "pm_apiversion='" + version + "'" @@ -5107,6 +5624,7 @@ $! WC "prefix='" + vms_prefix + "'" $ WC "prefix='" + prefix + "'" $ WC "privlib='" + privlib + "'" $ WC "privlibexp='" + privlibexp + "'" +$ WC "procselfexe=' '" $ WC "prototype='define'" $ WC "ptrsize='" + ptrsize + "'" $ WC "quadkind='" + quadkind + "'" @@ -5130,11 +5648,13 @@ $ WC "sPRIu64='" + sPRIu64 + "'" $ WC "sPRIx64='" + sPRIx64 + "'" $ WC "sSCNfldbl='" + sSCNfldbl + "'" $ WC "sched_yield='" + sched_yield + "'" +$ WC "scriptdir='" + scriptdir + "'" +$ WC "scriptdirexp='" + scriptdir + "'" ! use scriptdir for now $ WC "seedfunc='" + seedfunc + "'" $ WC "selectminbits='32'" $ WC "selecttype='" + selecttype + "'" $ WC "sh='MCR'" -$ WC "shmattype='" + "'" +$ WC "shmattype='" + " '" $ WC "shortsize='" + shortsize + "'" $ WC "shrplib='define'" $ WC "sig_name='" + sig_name + "'" @@ -5143,6 +5663,7 @@ $ WC/symbol tmp $ DELETE/SYMBOL tmp $ WC "sig_num='" + sig_num + "'" $ WC "sig_num_init='" + sig_num_init + "'" +$ WC "sig_size='" + sig_size + "'" $ WC "signal_t='" + signal_t + "'" $ WC "sitearch='" + sitearch + "'" $ WC "sitearchexp='" + sitearchexp + "'" @@ -5157,7 +5678,7 @@ $ WC "spitshell='write sys$output '" $ WC "src='" + src + "'" $ WC "ssizetype='int'" $ WC "startperl=" + startperl ! This one's special--no enclosing single quotes -$ WC "static_ext='" + "'" +$ WC "static_ext='" + static_ext + "'" $ WC "stdchar='" + stdchar + "'" $ WC "stdio_base='((*fp)->_base)'" $ WC "stdio_bufsiz='((*fp)->_cnt + (*fp)->_ptr - (*fp)->_base)'" @@ -5182,33 +5703,43 @@ $ WC "uquadtype='" + uquadtype + "'" $ WC "use5005threads='" + use5005threads + "'" $ WC "use64bitall='" + use64bitall + "'" $ WC "use64bitint='" + use64bitint + "'" +$ WC "usecasesensitive='" + be_case_sensitive + "'" ! VMS-specific +$ WC "usedebugging_perl='"+use_debugging_perl+"'" +$ WC "usedefaulttypes='" + usedefaulttypes + "'" ! VMS-specific +$ WC "usecrosscompile='undef'" $ WC "usedl='" + usedl + "'" +$ WC "useieee='" + useieee + "'" ! VMS-specific $ WC "useithreads='" + useithreads + "'" $ WC "uselargefiles='" + uselargefiles + "'" $ WC "uselongdouble='" + uselongdouble + "'" $ WC "usemorebits='" + usemorebits + "'" $ WC "usemultiplicity='" + usemultiplicity + "'" $ WC "usemymalloc='" + usemymalloc + "'" -$ WC "useperlio='undef'" +$ WC "useperlio='" + useperlio + "'" $ WC "useposix='false'" +$ WC "usereentrant='undef'" +$ WC "usesecurelog='" + usesecurelog + "'" ! VMS-specific $ WC "usesocks='undef'" $ WC "usethreads='" + usethreads + "'" $ WC "usevfork='true'" +$ WC "usevmsdebug='" + usevmsdebug + "'" ! VMS-specific $ WC "uvoformat='" + uvoformat + "'" $ WC "uvsize='" + uvsize + "'" $ WC "uvtype='" + uvtype + "'" $ WC "uvuformat='" + uvuformat + "'" $ WC "uvxformat='" + uvxformat + "'" +$ WC "uvXUformat='" + uvXUformat + "'" $ WC "vendorarchexp='" + "'" $ WC "vendorlib_stem='" + "'" $ WC "vendorlibexp='" + "'" $ WC "version='" + version + "'" +$ WC "version_patchlevel_string='" + version_patchlevel_string + "'" $ WC "vms_cc_type='" + vms_cc_type + "'" ! VMS specific $ WC "vms_prefix='" + vms_prefix + "'" ! VMS specific $ WC "vms_ver='" + vms_ver + "'" ! VMS specific $ WC "voidflags='15'" $ WC "xs_apiversion='" + version + "'" -$ WC "CONFIGDOTSH='true'" +$ WC "PERL_CONFIG_SH='true'" $! $! ##END WRITE NEW CONSTANTS HERE## $! @@ -5216,12 +5747,12 @@ $ CLOSE CONFIG $! $! Okay, we've gotten here. Build munchconfig.exe $ COPY/NOLOG [-.vms]munchconfig.c [] -$ COPY/NOLOG [-.vms]'Makefile_SH [] +$ COPY/NOLOG [-.vms]'Makefile_SH' [] $ 'Perl_CC' munchconfig.c $ IF Needs_Opt $ THEN $ OPEN/WRITE CONFIG []munchconfig.opt -$ IF Using_Gnu_C +$ IF ccname .EQS. "GCC" $ THEN $ WRITE CONFIG "Gnu_CC:[000000]gcclib.olb/library" $ ENDIF @@ -5234,7 +5765,7 @@ $ 'ld' munchconfig.obj $ ENDIF $ IF F$SEARCH("munchconfig.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig.obj; $ IF F$SEARCH("munchconfig.c") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig.c; -$ IF using_cxx +$ IF ccname .EQS. "CXX" $ THEN $ CALL Cxx_demangler_cleanup $ ENDIF @@ -5242,14 +5773,15 @@ $! $ IF alldone .EQS. "" $ THEN $ cat4 SYS$INPUT: +$ DECK If you'd like to make any changes to the config.sh file before I begin to configure things, answer yes to the following question. -$ dflt="n" -$ rp="Do you wish to edit ''basename_config_sh'? [''dflt'] " +$ EOD +$ bool_dflt="n" +$ rp="Do you wish to edit ''basename_config_sh'? [''bool_dflt'] " $ GOSUB myread -$ IF ans .EQS. "" then ans = dflt $ IF ans $ THEN $ echo4 "" @@ -5257,10 +5789,10 @@ $ echo4 "Be sure to type LOGOUT after you have edited the file," $ echo4 "then this procedure will resume." $ echo4 "" $ default = F$ENVIRONMENT("DEFAULT") -$ DIRECTORY 'config_sh +$ DIRECTORY 'config_sh' $ SET DEFAULT [-] $ SPAWN/WAIT -$ SET DEFAULT 'default +$ SET DEFAULT 'default' $ ENDIF $ ENDIF $! @@ -5269,8 +5801,10 @@ $ echo4 "Adding ''osname' specific preprocessor commands." $ ! $ ! we need an fdl file $ CREATE [-]CONFIG.FDL +$ DECK RECORD FORMAT STREAM_LF +$ EOD $ CREATE /FDL=[-]CONFIG.FDL [-]CONFIG.LOCAL $ ! First spit out the header info with the local defines (to get $ ! around the 255 character command line limit) @@ -5280,7 +5814,7 @@ $ IF use_two_pot_malloc THEN WC "#define TWO_POT_OPTIMIZE" $ IF mymalloc THEN WC "#define EMBEDMYMALLOC" $ IF use_pack_malloc THEN WC "#define PACK_MALLOC" $ IF use_debugmalloc THEN WC "#define DEBUGGING_MSTATS" -$ IF Using_Gnu_C THEN WC "#define GNUC_ATTRIBUTE_CHECK" +$ IF ccname .EQS. "GCC" THEN WC "#define GNUC_ATTRIBUTE_CHECK" $ IF (Has_Dec_C_Sockets) $ THEN $ WC "#define VMS_DO_SOCKETS" @@ -5303,6 +5837,14 @@ $ IF be_case_sensitive THEN WC "#define VMS_WE_ARE_CASE_SENSITIVE" $ IF d_herrno .EQS. "undef" THEN WC "#define NEED_AN_H_ERRNO" $ WC "#define HAS_ENVGETENV" $ WC "#define PERL_EXTERNAL_GLOB" +$ IF archname .EQS. "VMS_VAX" .AND. - + ccname .EQS. "DEC" .AND. - + ccversion .LE. 50390006 +$ THEN +$! Alas this does not help to build Fcntl +$! WC "#define PERL_IGNORE_FPUSIG SIGFPE" +$ ENDIF +$ IF kill_by_sigprc .EQS. "define" then WC "#define KILL_BY_SIGPRC" $ CLOSE CONFIG $! $ echo4 "Doing variable substitutions on .SH files..." @@ -5310,7 +5852,7 @@ $ echo4 "Extracting config.h (with variable substitutions)" $! $! Now build the normal config.h $ DEFINE/USER_MODE sys$output [-]config.main -$ mcr []munchconfig 'config_sh [-]config_h.sh +$ mcr []munchconfig 'config_sh' [-]config_h.sh $ ! Concatenate them together $ copy [-]config.local,[-]config.main [-]config.h $! Clean up @@ -5318,13 +5860,19 @@ $ DELETE/NOLOG [-]CONFIG.MAIN;* $ DELETE/NOLOG [-]CONFIG.LOCAL;* $ DELETE/NOLOG [-]CONFIG.FDL;* $! -$ IF Using_Dec_C +$ IF ccname .EQS. "DEC" $ THEN $ DECC_REPLACE = "DECC=decc=1" $ ELSE -$ DECC_REPLACE = "DECC=" +$ DECC_REPLACE = "DECC=" +$ ENDIF +$ IF ccname .EQS. "CXX" +$ THEN +$ DECCXX_REPLACE = "DECCXX=DECCXX=1" +$ ELSE +$ DECCXX_REPLACE = "DECCXX=" $ ENDIF -$ IF Using_Gnu_C +$ IF ccname .EQS. "GCC" $ THEN $ GNUC_REPLACE = "GNUC=gnuc=1" $ ELSE @@ -5359,41 +5907,63 @@ $ ELSE $ MALLOC_REPLACE = "MALLOC=" $ ENDIF $ echo4 "Extracting ''defmakefile' (with variable substitutions)" -$ DEFINE/USER_MODE sys$output 'UUmakefile -$ mcr []munchconfig 'config_sh 'Makefile_SH "''DECC_REPLACE'" "''ARCH_TYPE'" "''GNUC_REPLACE'" "''SOCKET_REPLACE'" "''THREAD_REPLACE'" - -"''C_Compiler_Replace'" "''MALLOC_REPLACE'" "''Thread_Live_Dangerously'" "PV=''version'" "FLAGS=FLAGS=''extra_flags'" -$ echo4 "Extracting Build_Ext.Com (without variable substitutions)" -$ Create Sys$Disk:[-]Build_Ext.Com +$ DEFINE/USER_MODE sys$output 'UUmakefile' +$ mcr []munchconfig 'config_sh' 'Makefile_SH' "''DECC_REPLACE'" - + "''DECCXX_REPLACE'" "''ARCH_TYPE'" "''GNUC_REPLACE'" "''SOCKET_REPLACE'" - + "''THREAD_REPLACE'" "''C_Compiler_Replace'" "''MALLOC_REPLACE'" - + "''Thread_Live_Dangerously'" "PV=''version'" "FLAGS=FLAGS=''extra_flags'" +$! Clean up after ourselves +$ DELETE/NOLOG/NOCONFIRM []munchconfig.exe; +$! +$ echo4 "Extracting make_ext.com (without variable substitutions)" +$ Create Sys$Disk:[-]make_ext.com $ Deck/Dollar="$EndOfTpl$" -$!++ Build_Ext.Com +$!++ make_ext.com $! NOTE: This file is extracted as part of the VMS configuration process. $! Any changes made to it directly will be lost. If you need to make any $! changes, please edit the template in Configure.Com instead. $ def = F$Environment("Default") -$ exts1 = F$Edit(p1,"Compress") -$ p2 = F$Edit(p2,"Upcase,Compress,Trim") -$ If F$Locate("MCR ",p2).eq.0 Then p2 = F$Extract(3,255,p2) -$ miniperl = "$" + F$Search(F$Parse(p2,".Exe")) -$ makeutil = p3 -$ if f$type('p3') .nes. "" then makeutil = 'p3' -$ targ = F$Edit(p4,"Lowercase") +$! p1 - how to invoke miniperl (passed in from descrip.mms) +$ p1 = F$Edit(p1,"Upcase,Compress,Trim") +$ If F$Locate("MCR ",p1).eq.0 Then p1 = F$Extract(3,255,p1) +$ miniperl = "$" + F$Search(F$Parse(p1,".Exe")) +$! p2 - how to invoke local make utility (passed in from descrip.mms) +$ makeutil = p2 +$ if f$type('p2') .nes. "" then makeutil = 'p2' +$! p3 - make target (passed in from descrip.mms) +$ targ = F$Edit(p3,"Lowercase") +$ sts = 1 +$ extensions = "" +$ open/read CONFIG config.sh +$ find_ext_loop: +$ read/end=end_ext_loop CONFIG line +$ if (f$extract(0,12,line) .NES. "extensions='") +$ then goto find_ext_loop +$ else extensions = f$extract(12,f$length(line),line) - "'" +$ endif +$ end_ext_loop: +$ close CONFIG +$ extensions = f$edit(extensions,"TRIM,COMPRESS") $ i = 0 $ next_ext: -$ ext = F$Element(i," ",p1) -$ If ext .eqs. " " Then Goto done +$ ext = f$element(i," ",extensions) +$ If ext .eqs. " " .or. ext .eqs. "" Then Goto done $ Define/User_mode Perl_Env_Tables CLISYM_LOCAL $ miniperl +$ deck ($extdir = $ENV{'ext'}) =~ s/::/./g; $extdir =~ s#/#.#g; if ($extdir =~ /^vms/i) { $extdir =~ s/vms/.vms.ext/i; } else { $extdir = ".ext.$extdir"; } ($ENV{'extdir'} = "[$extdir]"); ($ENV{'up'} = ('-') x ($extdir =~ tr/././)); +$ eod $ Set Default &extdir $ redesc = 0 $ If F$Locate("clean",targ) .eqs. F$Length(targ) $ Then -$ Write Sys$Output "Building ''ext' . . ." +$ Write Sys$Output "" +$ Write Sys$Output " Making ''ext' (dynamic)" $ On Error Then Goto done $ If F$Search("Descrip.MMS") .eqs. "" $ Then @@ -5416,11 +5986,52 @@ $ done: $ sts = $Status $ Set Def &def $ Exit sts -$!-- Build_Ext.Com +$!-- make_ext.com $EndOfTpl$ $! -$! Clean up after ourselves -$ DELETE/NOLOG/NOCONFIRM []munchconfig.exe; +$! Note that the /key qualifier to search, as in: +$! search README.* "=head"/key=(position=1)/window=0/output=extra.pods +$! is not supported on VMS V5.5-2, hence not used in extra_pods.com. +$! +$ echo4 "Extracting extra_pods.com (without variable substitutions)" +$ Create Sys$Disk:[-]extra_pods.com +$ Deck/Dollar="$EOExtra_Pods$" +$!++ extra_pods.com +$! NOTE: This file is extracted as part of the VMS configuration process. +$! Any changes made to it directly will be lost. If you need to make any +$! changes, please edit the template in Configure.Com instead. +$! Use FORCE if you've just podified a README.* file on VMS. +$ if f$search("extra.pods") .eqs. "" .or. P1 .eqs. "FORCE" then - + search README.* "=head"/window=0/output=extra.pods +$ open/read/error=extra_close EXTRA extra.pods +$extra_loop: +$ read/error=extra_close/END_OF_FILE=extra_close EXTRA file +$ file_type = f$parse(file,,,"TYPE",) - "." +$ if file_type .nes. "VMS" .and. file_type .nes. "vms" +$ then +$ pod_file = "[.pod]perl''file_type'.pod" +$ file = file - "''f$parse(file,,,"VERSION",)'" +$ if p1 .eqs. "CLEAN" +$ then if f$search(pod_file) .nes. "" then delete/log 'pod_file';* +$ else +$ do_copy := false +$ if f$search(pod_file) .eqs. "" +$ then do_copy := true +$ else +$ file_rdt = f$cvtime(f$file_attributes(file,"RDT")) +$ pod_file_rdt = f$cvtime(f$file_attributes(pod_file,"RDT")) +$ if file_rdt .GTS. pod_file_rdt then do_copy := true +$ endif +$ if do_copy then copy/log/noconfirm 'file' 'pod_file' +$ endif +$ endif +$ goto extra_loop +$extra_close: +$ close EXTRA +$ if p1 .eqs. "CLEAN" .and. f$search("extra.pods;-1") .nes. "" then - + purge/nolog extra.pods +$!-- extra_pods.com +$EOExtra_Pods$ $! $! Warn of dangerous symbols or logical names $! @@ -5428,7 +6039,7 @@ $Bad_environment: SUBROUTINE $ Bad_env = "" $ IF p2 .eqs. "SYMBOL" $ THEN -$ IF f$type('p1) .nes. "" THEN Bad_env := SYMBOL +$ IF f$type('p1') .nes. "" THEN Bad_env := SYMBOL $ ELSE $ IF f$trnlnm(p1) .nes. "" THEN Bad_env := LOGICAL $ ENDIF @@ -5448,7 +6059,7 @@ $ WRITE CONFIG " delete before building ''package' via:" $ WRITE CONFIG " $ DELETE/SYMBOL/GLOBAL ''p1'" $ IF f$locate("""",&p1) .ge. f$length(&p1) $ THEN -$ WRITE CONFIG " after building, testing, and installing ''package' +$ WRITE CONFIG " after building, testing, and installing ''package'" $ WRITE CONFIG " restore the symbol with:" $ WRITE CONFIG " $ ''p1' == """ + &p1 + """" $ ENDIF @@ -5483,7 +6094,7 @@ $ echo "" $ echo4 "The perl.cld file is now being written..." $ OPEN/WRITE CONFIG 'file_2_find' $ ext = ".exe" -$ IF ((sharedperl) .AND. (F$GETSYI("HW_MODEL") .GE. 1024)) THEN ext := .AXE +$ IF (sharedperl .AND. archname .EQS. "VMS_AXP") THEN ext := .AXE $ IF (use_vmsdebug_perl) $ THEN $ WRITE CONFIG "define verb dbgperl" @@ -5556,7 +6167,7 @@ $ ELSE !leave in but commented out (in case setting was from perl :-) $ WRITE CONFIG "$! define SYS$TIMEZONE_DIFFERENTIAL ''tzd'" $ ENDIF $ WRITE CONFIG "$!" -$ WRITE CONFIG "$! Symbols for commonly used scripts:" +$ WRITE CONFIG "$! Symbols for commonly used programs:" $ WRITE CONFIG "$!" $ IF (perl_symbol) $ THEN @@ -5573,8 +6184,11 @@ $ WRITE CONFIG "$ dprofpp == ""'"+"'Perl' ''vms_prefix':[utils]dprofpp.c $ ENDIF $ WRITE CONFIG "$ h2ph == ""'"+"'Perl' ''vms_prefix':[utils]h2ph.com""" $ WRITE CONFIG "$ h2xs == ""'"+"'Perl' ''vms_prefix':[utils]h2xs.com""" +$ WRITE CONFIG "$ libnetcfg == ""'"+"'Perl' ''vms_prefix':[utils]libnetcfg.com""" $ WRITE CONFIG "$!perlcc == ""'"+"'Perl' ''vms_prefix':[utils]perlcc.com""" +$ WRITE CONFIG "$ perlivp == ""'"+"'Perl' ''vms_prefix':[utils]perlivp.com""" $ WRITE CONFIG "$ splain == ""'"+"'Perl' ''vms_prefix':[utils]splain.com""" +$ WRITE CONFIG "$ xsubpp == ""'"+"'Perl' ''vms_prefix':[utils]xsubpp.com""" $ ELSE $ WRITE CONFIG "$ Perldoc == ""Perl ''vms_prefix':[lib.pod]Perldoc.com -t""" $ WRITE CONFIG "$ pod2text == ""Perl pod2text""" @@ -5589,8 +6203,11 @@ $ WRITE CONFIG "$ dprofpp == ""Perl ''vms_prefix':[utils]dprofpp.com""" $ ENDIF $ WRITE CONFIG "$ h2ph == ""Perl ''vms_prefix':[utils]h2ph.com""" $ WRITE CONFIG "$ h2xs == ""Perl ''vms_prefix':[utils]h2xs.com""" +$ WRITE CONFIG "$ libnetcfg == ""Perl ''vms_prefix':[utils]libnetcfg.com""" $ WRITE CONFIG "$!perlcc == ""Perl ''vms_prefix':[utils]perlcc.com""" +$ WRITE CONFIG "$ perlivp == ""Perl ''vms_prefix':[utils]perlivp.com""" $ WRITE CONFIG "$ splain == ""Perl ''vms_prefix':[utils]splain.com""" +$ WRITE CONFIG "$ xsubpp == ""Perl ''vms_prefix':[utils]xsubpp.com""" $ ENDIF $ CLOSE CONFIG $! @@ -5604,7 +6221,7 @@ $ echo "" $ IF ((.NOT.perl_symbol) .AND. (perl_verb .EQS. "DCLTABLES")) $ THEN $ file_2_find = "[-]''packageup'_install.com" -$ OPEN/WRITE CONFIG 'file_2_find +$ OPEN/WRITE CONFIG 'file_2_find' $ WRITE CONFIG "$ set command perl /table=sys$common:[syslib]dcltables.exe -" $ WRITE CONFIG " /output=sys$common:[syslib]dcltables.exe" $ WRITE CONFIG "$ install replace sys$common:[syslib]dcltables.exe" @@ -5658,13 +6275,14 @@ $ DELETE/NOLOG/NOCONFIRM config.msg; $ ENDIF $! $Clean_up: +$ SET NOON $ IF (silent) $ THEN +$ CLOSE/NOLOG STDOUT $ DEASSIGN SYS$OUTPUT -$! DEASSIGN SYS$ERROR $ ENDIF -$ IF F$GETJPI("","FILCNT").NE.vms_filcnt THEN CLOSE CONFIG -$ IF F$GETJPI("","FILCNT").NE.vms_filcnt +$ CLOSE/NOLOG CONFIG +$ IF F$GETJPI("","FILCNT").GT.vms_filcnt $ THEN WRITE SYS$ERROR "%Config-W-VMS, WARNING: There is a file still open" $ ENDIF $ dflt = F$ENVIRONMENT("DEFAULT") @@ -5676,6 +6294,5 @@ $ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) UU.DIR $ DELETE/NOLOG/NOCONFIRM UU.DIR; $ ENDIF $ SET DEFAULT 'vms_default_directory_name' !be kind rewind -$ STOP $ EXIT $!: End of Configure