+$! 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
$ macros = ""
$ extra_flags = ""
$ user_c_flags = ""
-$ use_ieee_math = "n"
+$ use_ieee_math = "y"
$ be_case_sensitive = "n"
$ use_vmsdebug_perl = "n"
$ use64bitall = "n"
$ 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
$!
$ 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)
$!: 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:
unless you want to help in developing and debugging Perl.
$ EOD
-$ dflt="n"
-$ rp="Do you really want to continue? [''dflt'] "
-$ IF (fastread) THEN fastread := FALSE
+$ 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."
$ 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
$ 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|sitebin|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:
This procedure is intended to Configure the building of Perl for VMS.
$ EOD
-$ READ SYS$COMMAND/PROMPT="Continue anyway? [n] " ans
+$ bool_dflt = "n"
+$ GOSUB myread
$ IF ans
$ THEN
$ echo4 "Continuing..."
$ STOP
$ EXIT 2 !$STATUS = "%X00000002" (error)
$ ENDIF
-$ ELSE !we are on VMS huzzah!
-$ IF .NOT.silent
-$ THEN TYPE SYS$INPUT:
-$ DECK
-
-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.
-$ EOD
-$ 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
$ 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
$! 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
$ alignbytes="8"
$ arch_type = "ARCH-TYPE=__AXP__"
$ ENDIF
+$ dflt = archname
$ rp = "What is your architecture name? [''archname'] "
$ GOSUB myread
$ IF ans.NES.""
$ 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
$ 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.
$! 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
$!
$ 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 ""
$ 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 ""
$ 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
$!: get the patchlevel
$ echo ""
$ echo4 "Getting the current patchlevel..."
+$ patchlevel="0"
+$ subversion="0"
+$ api_revision="0"
+$ api_version="0"
+$ api_subversion="0"
+$ perl_patchlevel="0"
$ patchlevel_h = F$SEARCH("[-]patchlevel.h")
$ IF (patchlevel_h.NES."")
$ THEN
$ 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
$ api_subversion = F$ELEMENT(2," ",line)
$ got_api_subversion = "true"
$ ENDIF
+$ 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) -
+ (.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"
$ 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
$!
$ 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
$!
$ 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
$ 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
$!
$ 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
+$ bin = ans
+$!
+$!: determine where add-on public executables go
+$ IF F$TYPE(sitebin) .NES. ""
+$ THEN dflt = sitebin
+$ ELSE dflt = "''vms_prefix':[bin.''archname']"
$ ENDIF
+$ rp = "Pathname where the add-on public executables should be installed? "
+$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
+$ GOSUB myread
+$ sitebin = ans
$!
$!: determine where manual pages are on this system
$!: What suffix to use on installed man pages
sitearch="''vms_prefix':[lib.site_perl.''archname']"
$ IF F$TYPE(sitelib) .EQS. "" THEN -
sitelib ="''vms_prefix':[lib.site_perl]"
+$ IF F$TYPE(sitebin) .EQS. "" THEN -
+ sitebin="''vms_prefix':[bin.''archname']"
$ ENDIF !%Config-I-VMS, skip "where install" questions
$!
$! These derived locations can be set whether we've opted to
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 -
$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"
$!: 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
$ 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")
$ 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
-$ ENDIF
+$ cf_email = ans
$ ENDIF
$!
$ IF .NOT.silent
$ 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
$ 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")
$ IF ans.eqs."decc" then Has_Dec_C_Sockets = "T"
$ IF ans.eqs."socketshr" then Has_socketshr = "T"
$ ENDIF
-$ IF Has_Dec_C_Sockets .or. Has_socketshr
-$ THEN
-$ static_ext = f$edit(static_ext+" "+"Socket","trim,compress")
-$ ENDIF
$!
$!
$! Ask if they want to build with VMS_DEBUG perl
$ 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 "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."
-$ dflt = "y"
-$ rp = "Build a DEBUGGING version of Perl? [''dflt'] "
+$ 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 "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."
-$ dflt = "n"
-$ rp = "Build Perl for multiplicity? [''dflt'] "
+$ 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"
$! 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 ""
$ echo "Choosing this option will most probably introduce binary incompatibilities."
$ echo ""
$ echo "If this does not make any sense to you, just accept the default ''dflt'."
-$ rp = "Try to use 64-bit integers, if available? [''dflt'] "
+$ rp = "Try to use 64-bit integers, if available? [''bool_dflt'] "
$ GOSUB myread
-$ IF ans .EQS. "" THEN ans = dflt
-$ IF ans
-$ THEN use64bitint="Y"
-$ ELSE use64bitint="N"
+$ use64bitint = ans
+$!
+$ bool_dflt = "n"
+$ IF F$TYPE(use64bitall) .NES. ""
+$ THEN
+$ 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 does not 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 ans
-$ 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
$!
$ 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*."
-$ dflt = "n"
-$ rp = "Build with threads? [''dflt'] "
+$ 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 "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'] "
+$ 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?
$ 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'] "
+$ 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
$ echo ""
$ echo "If you have no idea what this means, and do not have"
$ echo "any program requiring anything, choose the default."
-$ dflt = be_case_sensitive
-$ rp = "Build with case-sensitive symbols? [''dflt'] "
+$ 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
-$ IF ans .EQS. "" THEN ans="''dflt'"
-$ be_case_sensitive = "''ans'"
+$ 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'] "
+$ 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
-$ IF ans .eqs. "" THEN ans = "''dflt'"
-$ use_ieee_math = "''ans'"
+$ 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 "Your compiler may want other flags. For this question you should include"
$ dflt = user_c_flags
$ rp = "Any additional cc flags? [''dflt'] "
$ GOSUB myread
-$ IF ans .EQS. "" THEN ans = "''dflt'"
$ IF ans .EQS. "none" THEN ans = ""
$ user_c_flags = "''ans'"
$!
$ 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 ""
$ echo ""
$ echo "This is currently broken in some configurations. Only enable it if"
$ echo "you know what you are doing."
-$ dflt = "n"
-$ rp = "Always use default file types? [''dflt'] "
+$ 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 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."
-$ dflt = "n"
-$ IF F$TYPE(usemymalloc) .EQS. "STRING"
-$ THEN
-$ IF usemymalloc THEN dflt = "y"
-$ ENDIF
-$ rp = "Do you wish to attempt to use the malloc that comes with ''package'? [''dflt'] "
+$ 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
$ 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'] "
+$ 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 ""
$ 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 xxx .EQS. "Encode/CN" THEN goto ext_loop ! sub extension - omit
+$ IF xxx .EQS. "Encode/JP" THEN goto ext_loop ! sub extension - omit
+$ IF xxx .EQS. "Encode/KR" THEN goto ext_loop ! sub extension - omit
+$ IF xxx .EQS. "Encode/TW" 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"
+$ IF .NOT. use_threads THEN dflt = dflt - "Thread"
+$ dflt = F$EDIT(dflt,"TRIM,COMPRESS")
+$!
$! Ask for their default list of extensions to build
$ echo ""
$ echo "It is time to specify which modules you want to build into"
$ echo "SDBM_File if you have the GDBM library built on your machine."
$ echo ""
$ echo "Which modules do you want to build into perl?"
-$! we need to add Byteloader to this list:
-$ dflt = "re Fcntl Encode Errno File::Glob Filter::Util::Call IO Opcode Devel::Peek Devel::DProf Data::Dumper attrs VMS::Stdio VMS::DCLsym B SDBM_File Storable Thread Sys::Hostname Digest::MD5 PerlIO::Scalar MIME::Base64 XS::Typemap Time::HiRes"
-$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
-$ 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 ""
$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
$!
$ IF F$TYPE(pager) .EQS. "STRING" THEN dflt = pager
$ rp="What pager is used on your system? [''dflt'] "
$ GOSUB myread
-$ IF (ans .EQS. "")
-$ THEN pager = dflt
-$ ELSE pager = ans
-$ ENDIF
+$ pager = ans
$!
$! update [.vms]config.vms here
$!
$!
$! PerlIO abstraction
$!
-$ dflt = "n"
+$ bool_dflt = "y"
$ IF F$TYPE(useperlio) .NES. ""
-$ THEN
-$ IF useperlio THEN dflt = "y"
-$ IF useperlio .EQS. "define" THEN dflt = "y"
-$ ENDIF
+$ 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 version of ''package' used the standard IO mechanisms as"
+$ echo "Previous versions of ''package' used the standard IO mechanisms as"
$ TYPE SYS$INPUT:
$ DECK
defined in <stdio.h>. Versions 5.003_02 and later of perl allow
alternate IO mechanisms via the PerlIO abstraction layer, but the
-stdio mechanism is still the default. This abstraction layer can
-use AT&T's sfio (if you already have sfio installed) or regular stdio.
+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 '" + dflt + "'."
+$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
$ ENDIF
-$ rp = "Use the experimental PerlIO abstraction layer? [''dflt'] "
+$ rp = "Use the PerlIO abstraction layer? [''bool_dflt'] "
$ GOSUB myread
-$ IF ans .EQS. "" THEN ans = dflt
$ IF ans
$ THEN
$ useperlio = "define"
$! - 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 make_ext.com extension builder procedure.
$!
$! Note for folks from other platforms changing things in here:
$!
$ 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
$ 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"
$ 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"
$ 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"))
+$ IF ((use_threads) .AND. (vms_ver .LES. "6.2"))
$ THEN
$ libs="SYS$SHARE:CMA$LIB_SHR.EXE/SHARE SYS$SHARE:CMA$RTL.EXE/SHARE SYS$SHARE:CMA$OPEN_LIB_SHR.exe/SHARE SYS$SHARE:CMA$OPEN_RTL.exe/SHARE"
$ ELSE
$ d_PRIu64 = "define"
$ d_PRIo64 = "define"
$ d_PRIx64 = "define"
+$ d_PRIXU64 = "define"
$ sPRId64 = """Ld"""
$ sPRIEUldbl = """LE"""
$ sPRIFUldbl = """LF"""
$!
$! Now some that we build up
$!
-$ IF Use_Threads
+$ IF use_threads
$ THEN
$ IF use_5005_threads
$ THEN
$ WS "int main()"
$ WS "{"
$ WS "char * place;"
-$ WS "place = memchr(""foo"", 47, 3)"
+$ WS "place = memchr(""foo"", 47, 3);"
$ WS "exit(0);"
$ WS "}"
$ CS
$ GOSUB inlibc
$ d_mkstemps = tmp
$!
-$! Check for iconv
-$!
-$ OS
-$ WS "#if defined(__DECC) || defined(__DECCXX)"
-$ WS "#include <stdlib.h>"
-$ WS "#endif"
-$ WS "#include <stdio.h>"
-$ WS "#include <iconv.h>"
-$ 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 "<iconv.h> found."
-$ ELSE echo4 "<iconv.h> NOT found."
-$ ENDIF
-$!
$! Check for mkdtemp
$!
$ OS
$ 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()."
(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_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_sysconf="undef"
$ d_sigsetjmp="undef"
$ ENDIF
+$!: see if tzname[] exists
+$ OS
+$ WS "#include <stdio.h>"
+$ WS "#include <time.h>"
+$ 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_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
$ 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="undef"
+$ d_stdio_ptr_lval_nochange_cnt="define"
$!
$! Sockets?
$ if Has_Socketshr .OR. Has_Dec_C_Sockets
$ THEN
$ d_nv_preserves_uv = "define"
$ echo "Yes, they can."
-$ d_nv_preserves_uv_bits = F$STRING(F$INTEGER(uvsize) * 8)
+$ nv_preserves_uv_bits = F$STRING(F$INTEGER(uvsize) * 8)
$ ELSE
$ d_nv_preserves_uv = "undef"
$ echo "No, they can't."
$ WS " printf(""%d\n"", i);"
$ WS " exit(0);"
$ WS "}"
+$ CS
+$ GOSUB compile
+$ nv_preserves_uv_bits = tmp
+$ ENDIF
+$!
+$ echo4 "Checking if kill() uses SYS$FORCEX or can't be called from a signal handler..."
+$ kill_by_sigprc = "undef"
+$ OS
+$ WS "#include <stdio.h>"
+$ WS "#include <signal.h>"
+$ WS "#include <unistd.h>"
+$ WS "void handler1(int s) { printf(""%d"",s); kill(getpid(),2); }"
+$ WS "void handler2(int s) { printf(""%d"",s); }"
+$ WS "main(){"
+$ WS " printf(""0"");"
+$ WS " signal(1,handler1);"
+$ WS " signal(2,handler2);"
+$ WS " kill(getpid(),1);"
+$ WS " sleep(1);"
+$ WS " printf(""\n"");"
+$ WS "}"
+$ CS
+$ ON ERROR THEN CONTINUE
+$ GOSUB compile
+$ IF tmp .NES. "012"
+$ THEN
+$ echo4 "Yes, it has at least one of those limitations."
+$ echo4 "Checking whether we can use SYS$SIGPRC instead..."
+$ OS
+$ WS "#include <stdio.h>"
+$ WS "#include <lib$routines.h>"
+$ 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
-$ d_nv_preserves_uv_bits = tmp
+$ IF tmp .EQS. "1"
+$ THEN
+$ echo4 "Yep, 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
+$ ELSE
+$ echo4 "Nope, we can't."
+$ ENDIF
+$ ELSE
+$ echo4 "Nope, it doesn't."
$ ENDIF
$ DELETE/SYMBOL tmp
$!
-$ ivdformat="""ld"""
-$ uvuformat="""lu"""
-$ uvoformat="""lo"""
-$ uvxformat="""lx"""
-$ uvXUformat="""lX"""
-$! uselongdouble?
-$ nveformat="""e"""
-$ nvfformat="""f"""
-$ nvgformat="""g"""
-$!
$! Finally the composite ones. All config
$!
$ myuname="''osname' ''myname' ''osvers' ''F$EDIT(hwname, "TRIM")'"
$!
$ 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'/NoList''ccflags'"
+$ 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
$ WC "PERL_SUBVERSION='" + subversion + "'"
$ WC "PERL_API_VERSION='" + api_version + "'"
$ WC "PERL_API_SUBVERSION='" + api_subversion + "'"
+$ WC "_a='" + lib_ext + "'"
+$ WC "_ext='" + exe_ext + "'"
+$ WC "_o='" + obj_ext + "'"
$ WC "alignbytes='" + alignbytes + "'"
$ WC "aphostname='write sys$output f$edit(f$getsyi(\""SCSNODE\""),\""TRIM,LOWERCASE\"")'"
$ WC "ar='" + "'"
$ WC "cppminus='" + cppminus + "'"
$ WC "cpprun='" + cpprun + "'"
$ WC "cppstdin='" + cppstdin + "'"
-$ WC "crosscompile='undef'"
-$ WC "d__fwalk='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 + "'"
$ 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'"
$ 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'"
$ 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'"
$ 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'"
$ 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'"
$ WC "d_gethent='" + d_gethent + "'"
$ WC "d_gethname='" + d_gethname + "'"
$ WC "d_gethostprotos='" + d_gethostprotos + "'"
-$ WC "d_getitimer='undef'"
+$ WC "d_getitimer='" + d_getitimer + "'"
$ WC "d_getlogin='define'"
$ WC "d_getmnt='undef'"
$ WC "d_getmntent='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'"
$ 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'"
$ 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 "nv_preserves_uv_bits='" + nv_preserves_uv_bits + "'"
$ WC "d_off64_t='" + d_off64_t + "'"
$ WC "d_old_pthread_create_joinable='" + d_old_pthread_create_joinable + "'"
$ WC "d_oldarchlib='define'"
$ 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'"
$ 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'"
$ WC "d_setgrent='undef'"
$ WC "d_setgrps='undef'"
$ WC "d_sethent='" + d_sethent + "'"
-$ WC "d_setitimer='undef'"
+$ WC "d_setitimer='" + d_setitimer + "'"
$ WC "d_setlinebuf='undef'"
$ WC "d_setlocale='" + d_setlocale + "'"
$ WC "d_setnent='" + d_setnent + "'"
$ 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_sets_cnt='" + d_stdio_ptr_lval_sets_cnt + "'"
$ 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 + "'"
$ 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'"
$ WC "d_tcsetpgrp='undef'"
$ WC "d_telldir='define'"
$ WC "d_telldirproto='define'"
+$ WC "d_time='define'"
$ WC "d_times='define'"
+$ IF ("''F$EXTRACT(1,3, F$GETSYI(""VERSION""))'".GES."7.0")
+$ THEN
+$ WC "d_tm_tm_gmtoff='define'"
+$ WC "d_tm_tm_zone='define'"
+$ ELSE
+$ WC "d_tm_tm_gmtoff='undef'"
+$ WC "d_tm_tm_zone='undef'"
+$ ENDIF
$ WC "d_truncate='" + d_truncate + "'"
-$ WC "d_tzname='undef'"
+$ WC "d_tzname='" + d_tzname + "'"
$ WC "d_u32align='define'"
-$ WC "d_ualarm='undef'"
+$ 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_usleep='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'"
$ 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='" + mymalloc + "'"
+$ 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'"
$ 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 + "'"
$ WC "installbin='" + installbin + "'"
$ WC "installman1dir='" + installman1dir + "'"
$ WC "installman3dir='" + installman3dir + "'"
+$ WC "installprefix='" + vms_prefix + "'"
+$ WC "installprefixexp='" + vms_prefix + ":'"
$ WC "installprivlib='" + installprivlib + "'"
$ WC "installscript='" + installscript + "'"
$ WC "installsitearch='" + installsitearch + "'"
+$ WC "installsitebin='" + sitebin + "'"
$ WC "installsitelib='" + installsitelib + "'"
$ WC "installusrbinperl='undef'"
$ 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='" + ldflags + "'"
$ 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 "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 + "'"
-$! WC "prefix='" + vms_prefix + "'"
-$ WC "prefix='" + prefix + "'"
+$ WC "prefix='" + vms_prefix + "'"
+$ WC "prefixexp='" + vms_prefix + ":'"
$ WC "privlib='" + privlib + "'"
$ WC "privlibexp='" + privlibexp + "'"
+$ WC "procselfexe=' '"
$ WC "prototype='define'"
$ WC "ptrsize='" + ptrsize + "'"
$ WC "quadkind='" + quadkind + "'"
$ 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 "signal_t='" + signal_t + "'"
$ WC "sitearch='" + sitearch + "'"
$ WC "sitearchexp='" + sitearchexp + "'"
+$ WC "sitebin='" + sitebin + "'"
+$ WC "sitebinexp='" + sitebin + "'"
$ WC "sitelib='" + sitelib + "'"
$ WC "sitelib_stem='" + sitelib_stem + "'"
$ WC "sitelibexp='" + sitelibexp + "'"
+$ WC "siteprefix='" + vms_prefix + "'"
+$ WC "siteprefixexp='" + vms_prefix + ":'"
$ WC "sizesize='" + sizesize + "'"
$ WC "sizetype='size_t'"
$ WC "so='" + so + "'"
$ WC "use5005threads='" + use5005threads + "'"
$ WC "use64bitall='" + use64bitall + "'"
$ WC "use64bitint='" + use64bitint + "'"
-$ WC "usedebugging_perl='" + use_debugging_perl + "'"
+$ 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 "usemymalloc='" + usemymalloc + "'"
$ WC "useperlio='" + useperlio + "'"
$ WC "useposix='false'"
+$ WC "usereentrant='undef'"
+$ WC "usesecurelog='" + usesecurelog + "'" ! VMS-specific
$ WC "usesocks='undef'"
$ WC "usethreads='" + usethreads + "'"
+$ WC "usevendorprefix='" + "'" ! try to say no, though we'll be ignored as of MM 5.90_01
$ 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 "vendorarch='" + "'"
$ WC "vendorarchexp='" + "'"
+$ WC "vendorbin='" + "'"
+$ WC "vendorbinexp='" + "'"
$ WC "vendorlib_stem='" + "'"
+$ WC "vendorlib='" + "'"
$ WC "vendorlibexp='" + "'"
+$ WC "vendorprefix='" + "'"
+$ WC "vendorprefixexp='" + "'"
$ 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'"
+
+$!
+$! ## The UNIXy POSIXy reentrantey thingys ##
+$!
+
+$ WC "asctime_r_proto='0'"
+$ WC "crypt_r_proto='0'"
+$ WC "ctermid_r_proto='0'"
+$ WC "ctime_r_proto='0'"
+$ WC "d_asctime_r='undef'"
+$ WC "d_crypt_r='undef'"
+$ WC "d_ctermid_r='undef'"
+$ WC "d_ctime_r='undef'"
+$ WC "d_drand48_r='undef'"
+$ WC "d_endgrent_r='undef'"
+$ WC "d_endhostent_r='undef'"
+$ WC "d_endnetent_r='undef'"
+$ WC "d_endprotoent_r='undef'"
+$ WC "d_endpwent_r='undef'"
+$ WC "d_endservent_r='undef'"
+$ WC "d_getgrent_r='undef'"
+$ WC "d_getgrgid_r='undef'"
+$ WC "d_getgrnam_r='undef'"
+$ WC "d_gethostbyaddr_r='undef'"
+$ WC "d_gethostbyname_r='undef'"
+$ WC "d_gethostent_r='undef'"
+$ WC "d_getlogin_r='undef'"
+$ WC "d_getnetbyaddr_r='undef'"
+$ WC "d_getnetbyname_r='undef'"
+$ WC "d_getnetent_r='undef'"
+$ WC "d_getprotobyname_r='undef'"
+$ WC "d_getprotobynumber_r='undef'"
+$ WC "d_getprotoent_r='undef'"
+$ WC "d_getpwent_r='undef'"
+$ WC "d_getpwnam_r='undef'"
+$ WC "d_getpwuid_r='undef'"
+$ WC "d_getservbyname_r='undef'"
+$ WC "d_getservbyport_r='undef'"
+$ WC "d_getservent_r='undef'"
+$ WC "d_getspnam_r='undef'"
+$ WC "d_gmtime_r='undef'"
+$ WC "d_localtime_r='undef'"
+$ WC "d_random_r='undef'"
+$ WC "d_readdir64_r='undef'"
+$ WC "d_readdir_r='undef'"
+$ WC "d_setgrent_r='undef'"
+$ WC "d_sethostent_r='undef'"
+$ WC "d_setlocale_r='undef'"
+$ WC "d_setnetent_r='undef'"
+$ WC "d_setprotoent_r='undef'"
+$ WC "d_setpwent_r='undef'"
+$ WC "d_setservent_r='undef'"
+$ WC "d_srand48_r='undef'"
+$ WC "d_srandom_r='undef'"
+$ WC "d_strerror_r='undef'"
+$ WC "d_tmpnam_r='undef'"
+$ WC "d_ttyname_r='undef'"
+$ WC "drand48_r_proto='0'"
+$ WC "endgrent_r_proto='0'"
+$ WC "endhostent_r_proto='0'"
+$ WC "endnetent_r_proto='0'"
+$ WC "endprotoent_r_proto='0'"
+$ WC "endpwent_r_proto='0'"
+$ WC "endservent_r_proto='0'"
+$ WC "getgrent_r_proto='0'"
+$ WC "getgrgid_r_proto='0'"
+$ WC "getgrnam_r_proto='0'"
+$ WC "gethostbyaddr_r_proto='0'"
+$ WC "gethostbyname_r_proto='0'"
+$ WC "gethostent_r_proto='0'"
+$ WC "getlogin_r_proto='0'"
+$ WC "getnetbyaddr_r_proto='0'"
+$ WC "getnetbyname_r_proto='0'"
+$ WC "getnetent_r_proto='0'"
+$ WC "getprotobyname_r_proto='0'"
+$ WC "getprotobynumber_r_proto='0'"
+$ WC "getprotoent_r_proto='0'"
+$ WC "getpwent_r_proto='0'"
+$ WC "getpwnam_r_proto='0'"
+$ WC "getpwuid_r_proto='0'"
+$ WC "getservbyname_r_proto='0'"
+$ WC "getservbyport_r_proto='0'"
+$ WC "getservent_r_proto='0'"
+$ WC "getspnam_r_proto='0'"
+$ WC "gmtime_r_proto='0'"
+$ WC "i_crypt='undef'"
+$ WC "localtime_r_proto='0'"
+$ WC "random_r_proto='0'"
+$ WC "readdir64_r_proto='0'"
+$ WC "readdir_r_proto='0'"
+$ WC "setgrent_r_proto='0'"
+$ WC "sethostent_r_proto='0'"
+$ WC "setlocale_r_proto='0'"
+$ WC "setnetent_r_proto='0'"
+$ WC "setprotoent_r_proto='0'"
+$ WC "setpwent_r_proto='0'"
+$ WC "setservent_r_proto='0'"
+$ WC "srand48_r_proto='0'"
+$ WC "srandom_r_proto='0'"
+$ WC "strerror_r_proto='0'"
+$ WC "tmpnam_r_proto='0'"
+$ WC "ttyname_r_proto='0'
+
$!
$! ##END WRITE NEW CONSTANTS HERE##
$!
to configure things, answer yes to the following question.
$ EOD
-$ dflt="n"
-$ rp="Do you wish to edit ''basename_config_sh'? [''dflt'] "
+$ 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 ""
$ 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..."
$ SOCKET_REPLACE = "SOCKET="
$ ENDIF
$ ENDIF
-$ IF Use_Threads
+$ IF use_threads
$ THEN
$ IF (vms_ver .LES. "6.2")
$ THEN
"''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$"
$! 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
$ On Error Then Continue
$ EndIf
$ If redesc Then -
- miniperl "-I[''up'.lib]" Makefile.PL "INST_LIB=[''up'.lib]" "INST_ARCHLIB=[''up'.lib]"
+ miniperl "-I[''up'.lib]" Makefile.PL "INST_LIB=[''up'.lib]" "INST_ARCHLIB=[''up'.lib]" "PERL_CORE=1"
$ makeutil 'targ'
$ i = i + 1
$ Set Def &def
$ 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"
$ 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
$ 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"""
$ 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
$!
$ ENDIF
$!
$Clean_up:
+$ SET NOON
$ IF (silent)
$ THEN
+$ CLOSE/NOLOG STDOUT
$ DEASSIGN SYS$OUTPUT
-$! DEASSIGN SYS$ERROR
$ ENDIF
-$ IF F$GETJPI("","FILCNT").GT.vms_filcnt THEN CLOSE CONFIG
+$ 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