This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Apply NetBSD patch-ab: NetBSD hints update.
[perl5.git] / configure.com
index 1d09675..98e5867 100644 (file)
@@ -1,4 +1,6 @@
+$! 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 
@@ -40,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"
@@ -426,11 +428,15 @@ $     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
@@ -603,71 +609,71 @@ $!
 $myread:
 $ ans = ""
 $ len_rp = F$LENGTH(rp)
-$ If (fastread)
-$ Then
-$   IF len_rp .GT. 210
-$   THEN
-$     i_rp = 0
-$     fastread_rp_loop:
-$       sub_rp = F$EXTRACT(i_rp,COLUMNS,rp)
-$       echo4 "''sub_rp'"
-$       i_rp = i_rp + COLUMNS
-$       IF i_rp .LT. len_rp THEN GOTO fastread_rp_loop
-$   ELSE
-$     echo4 "''rp'"
-$   ENDIF
-$ Else
 $   If (.NOT. silent) Then echo ""
 $   IF len_rp .GT. 210
 $   THEN
 $     i_rp = 0
-$     firstread_rp_loop:
+$   rp_loop:
 $       sub_rp = F$EXTRACT(i_rp,COLUMNS,rp)
-$       echo4 "''sub_rp'"
 $       i_rp = i_rp + COLUMNS
-$       IF i_rp .LT. len_rp THEN GOTO firstread_rp_loop
-$     READ SYS$COMMAND/PROMPT="''sub_rp'" ans
+$       if i_rp .LT. len_rp THEN echo4 "''sub_rp'"
+$     IF i_rp .LT. len_rp THEN GOTO rp_loop
 $   ELSE
-$     READ SYS$COMMAND/PROMPT="''rp'" ans
+$   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 ""
-$     IF len_rp .GT. 210
-$     THEN
-$       i_rp = 0
-$       secondread_rp_loop:
-$         sub_rp = F$EXTRACT(i_rp,COLUMNS,rp)
-$         echo4 "''sub_rp'"
-$         i_rp = i_rp + COLUMNS
-$         IF i_rp .LT. len_rp THEN GOTO secondread_rp_loop
-$       READ SYS$COMMAND/PROMPT="''sub_rp'" ans
-$     ELSE
-$       READ SYS$COMMAND/PROMPT="''rp'" ans
-$     ENDIF
-$     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 ""
-$     IF len_rp .GT. 210
-$     THEN
-$       i_rp = 0
-$       thirdread_rp_loop:
-$         sub_rp = F$EXTRACT(i_rp,COLUMNS,rp)
-$         echo4 "''sub_rp'"
-$         i_rp = i_rp + COLUMNS
-$         IF i_rp .LT. len_rp THEN GOTO thirdread_rp_loop
-$       READ SYS$COMMAND/PROMPT="''sub_rp'" ans
-$     ELSE
-$       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:
@@ -720,11 +726,13 @@ $       DECK
     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."
@@ -751,8 +759,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
@@ -851,32 +859,64 @@ $   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:
@@ -914,7 +954,8 @@ $   DECK
  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..."
@@ -924,26 +965,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:
-$   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
@@ -1015,11 +1036,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
@@ -1075,6 +1096,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 
@@ -1088,6 +1112,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.""
@@ -1098,16 +1123,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
@@ -1127,9 +1148,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.
@@ -1159,12 +1181,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
 $!
@@ -1189,18 +1221,15 @@ $   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
 $!
 $ IF F$TYPE(perl_symbol) .EQS. "" THEN perl_symbol := true
 $ IF F$TYPE(perl_verb) .EQS. "" THEN perl_verb = ""
 $ IF perl_symbol
-$ THEN dflt = "y"
-$ ELSE dflt = "n"
+$ THEN bool_dflt = "y"
+$ ELSE bool_dflt = "n"
 $ ENDIF
 $ IF .NOT.silent 
 $ THEN 
@@ -1210,16 +1239,15 @@ $   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 (ans.EQS."") THEN ans = dflt
 $ IF (.NOT.ans) THEN perl_symbol = "false"
 $!
 $ IF (.NOT.perl_symbol)
 $ THEN
 $   IF perl_verb .EQS. "DCLTABLES"
-$   THEN dflt = "n"
-$   ELSE dflt = "y"
+$   THEN bool_dflt = "n"
+$   ELSE bool_dflt = "y"
 $   ENDIF
 $   IF .NOT.silent 
 $   THEN 
@@ -1228,9 +1256,8 @@ $     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 (ans.EQS."") THEN ans = dflt
 $   IF (.NOT.ans)
 $   THEN perl_verb = "DCLTABLES"
 $   ELSE perl_verb = "PROCESS"
@@ -1251,6 +1278,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
@@ -1284,11 +1312,19 @@ $     line = F$EDIT(line,"COMPRESS, TRIM")
 $     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
@@ -1298,13 +1334,14 @@ $   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
 $!
@@ -1334,10 +1371,7 @@ $   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
 $!
@@ -1375,10 +1409,7 @@ $   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 
@@ -1396,10 +1427,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
 $!
@@ -1412,10 +1440,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
@@ -1468,6 +1493,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 -
@@ -1952,7 +1979,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"
@@ -2006,8 +2033,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
@@ -2027,8 +2055,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")
@@ -2057,10 +2086,7 @@ $ THEN
 $   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 
@@ -2078,10 +2104,7 @@ $ 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
@@ -2141,17 +2164,12 @@ $   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")
 $   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
@@ -2160,16 +2178,20 @@ $ 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
@@ -2179,16 +2201,14 @@ $ 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."
-$ 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 ""
@@ -2197,10 +2217,13 @@ $ echo "within the same Perl executable."
 $ 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"
@@ -2211,7 +2234,11 @@ $!
 $! 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 ""
@@ -2222,32 +2249,31 @@ $   echo "fileops at the moment, as Dec C doesn't do that yet)."
 $   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
 $!
@@ -2258,11 +2284,14 @@ $   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 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?
@@ -2278,16 +2307,18 @@ $     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'] "
+$     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?
@@ -2302,11 +2333,10 @@ $       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'] "
+$       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
@@ -2327,22 +2357,37 @@ $   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."
-$   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"
+$   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"
@@ -2353,7 +2398,6 @@ $ echo "To use no flags, specify the word ""none""."
 $ 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'"
 $!
@@ -2372,14 +2416,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 ""
@@ -2393,32 +2439,31 @@ $ echo "finally foo.com)."
 $ 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
@@ -2427,11 +2472,10 @@ $     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'] "
+$     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 ""
@@ -2445,7 +2489,6 @@ $   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
@@ -2465,6 +2508,7 @@ $   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'"
@@ -2484,7 +2528,13 @@ $ 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 - "Socket"              ! on VMS is optional static extension
+$ 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
@@ -2497,7 +2547,6 @@ $ echo ""
 $ echo "Which modules do you want to build into perl?"
 $ rp = "[''dflt'] "
 $ GOSUB myread
-$ if ans .eqs. "" then ans = "''dflt'"
 $ extensions = F$EDIT(ans,"TRIM,COMPRESS")
 $!
 $! %Config-I-VMS, determine build/make utility here (make gmake mmk mms)
@@ -2550,6 +2599,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
 $!
@@ -2625,10 +2675,7 @@ $ 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
-$ IF (ans .EQS. "") 
-$ THEN pager = dflt
-$ ELSE pager = ans
-$ ENDIF
+$ pager = ans
 $!
 $! update [.vms]config.vms here
 $!
@@ -2683,29 +2730,27 @@ $ ENDIF
 $!
 $! 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"
@@ -2805,11 +2850,31 @@ $   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
@@ -2818,11 +2883,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"
@@ -2838,9 +2904,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"
@@ -2887,6 +2953,7 @@ $   d_PRIgldbl = "define"
 $   d_PRIu64 = "define"
 $   d_PRIo64 = "define"
 $   d_PRIx64 = "define"
+$   d_PRIXU64 = "define"
 $   sPRId64 = """Ld"""
 $   sPRIEUldbl = """LE"""
 $   sPRIFUldbl = """LF"""
@@ -3895,43 +3962,6 @@ $ tmp = "mkstemps"
 $ 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
@@ -4531,7 +4561,7 @@ $   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()."
@@ -4565,8 +4595,16 @@ $ 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"
@@ -4589,9 +4627,17 @@ $   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"
@@ -4651,7 +4697,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
@@ -4668,7 +4716,9 @@ $   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"
@@ -4875,42 +4925,96 @@ $   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 <stdio.h>"
+$ WS "#include <signal.h>"
+$ 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 <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
+$   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"""
-$ 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
@@ -4969,12 +5073,11 @@ $ 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_Gconvert='my_gconvert(x,n,t,b)'"
 $ 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 + "'"
@@ -5005,6 +5108,7 @@ $ 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'"
@@ -5013,6 +5117,7 @@ $ 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'"
@@ -5029,16 +5134,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'"
@@ -5058,7 +5170,7 @@ $ WC "d_gethbyname='" + d_gethbyname + "'"
 $ 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'"
@@ -5088,11 +5200,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'"
@@ -5122,10 +5235,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_modfl_pow32_bug='undef'"
-$ WC "d_mprotect='undef'"
+$ WC "d_mprotect='" + d_mprotect + "'"
 $ WC "d_msg='undef'"
 $ WC "d_msg_ctrunc='undef'"
 $ WC "d_msg_dontroute='undef'"
@@ -5133,10 +5246,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 + "'"
@@ -5150,6 +5264,8 @@ $ WC "d_perl_otherlibdirs='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'"
@@ -5188,7 +5304,7 @@ $ WC "d_seteuid='undef'"
 $ 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 + "'"
@@ -5266,13 +5382,14 @@ $ WC "d_times='define'"
 $ WC "d_truncate='" + d_truncate + "'"
 $ 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_usleepproto='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'"
@@ -5306,7 +5423,7 @@ $ WC/symbol tmp
 $ DELETE/SYMBOL tmp
 $ WC "eagain=' '"
 $ WC "ebcdic='undef'"
-$ WC "embedmymalloc='" + mymalloc + "'"
+$ WC "embedmymalloc='" + usemymalloc + "'"
 $ WC "eunicefix=':'"
 $ WC "exe_ext='" + exe_ext + "'"
 $!
@@ -5344,10 +5461,12 @@ $ 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 + "'"
@@ -5448,7 +5567,7 @@ $ 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 + "'"
@@ -5480,6 +5599,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 + "'"
@@ -5487,6 +5608,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 + "'"
@@ -5510,6 +5632,7 @@ $ WC "sPRIu64='" + sPRIu64 + "'"
 $ WC "sPRIx64='" + sPRIx64 + "'"
 $ WC "sSCNfldbl='" + sSCNfldbl + "'"
 $ WC "sched_yield='" + sched_yield + "'"
+$ WC "scriptdir='" + scriptdir + "'"
 $ WC "seedfunc='" + seedfunc + "'"
 $ WC "selectminbits='32'"
 $ WC "selecttype='" + selecttype + "'"
@@ -5563,8 +5686,12 @@ $ WC "uquadtype='" + uquadtype + "'"
 $ 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 + "'"
@@ -5574,9 +5701,11 @@ $ WC "usemymalloc='" + usemymalloc + "'"
 $ 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 + "'"
@@ -5587,6 +5716,7 @@ $ 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
@@ -5632,10 +5762,9 @@ 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.
 
 $   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 ""
@@ -5691,6 +5820,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..."
@@ -5928,8 +6065,6 @@ $ CALL Bad_environment "LIB"
 $ CALL Bad_environment "T"
 $ CALL Bad_environment "FOO"
 $ CALL Bad_environment "EXT"
-$ CALL Bad_environment "SOME_LOGICAL_NAME_NOT_LIKELY"
-$ CALL Bad_environment "DOWN_LOGICAL_NAME_NOT_LIKELY"
 $ CALL Bad_environment "TEST" "SYMBOL"
 $ IF f$search("config.msg") .eqs. "" THEN echo "OK."
 $!
@@ -5942,7 +6077,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"
@@ -6015,7 +6150,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
@@ -6032,8 +6167,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"""
@@ -6048,8 +6186,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
 $!