This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[patch] rid local_patches warnings
[perl5.git] / configure.com
index 0946503..4a5ee1e 100644 (file)
@@ -30,8 +30,6 @@ $! with much valuable help from Charles Bailey &
 $! the whole VMSPerl crew.
 $! Extended and messed about with by Dan Sugalski
 $!
-$ sav_ver = F$VERIFY(0)
-$!
 $! VMS-isms we will need:
 $ echo = "write sys$output "
 $ cat  = "type"
@@ -53,10 +51,20 @@ $ use_two_pot_malloc = "N"
 $ use_pack_malloc = "N"
 $ use_debugmalloc = "N"
 $ ccflags = ""
+$ static_ext = ""
 $ vms_default_directory_name = F$ENVIRONMENT("DEFAULT")
 $ max_allowed_dir_depth = 3  ! e.g. [A.B.PERLxxx] not [A.B.C.PERLxxx]
 $! max_allowed_dir_depth = 2 ! e.g. [A.PERLxxx] not [A.B.PERLxxx]
 $!
+$! Sebastian Bazley's request: close the CONFIG handle with /NOLOG
+$! qualifier "just in case" (configure.com is re @ed in a bad state).
+$! This construct was tested to be not a problem as far back as
+$! VMS V5.5-2, hopefully earlier versions are OK as well.
+$!
+$ CLOSE/NOLOG CONFIG
+$!
+$! Now keep track of open files
+$!
 $ vms_filcnt = F$GETJPI ("","FILCNT")
 $!
 $!: compute my invocation name
@@ -125,9 +133,7 @@ $ silent=""
 $ extractsh=""
 $ override=""
 $ knowitall=""
-$ Using_Dec_C = "n"
-$ Using_Gnu_C = "n"
-$ using_cxx = "n"
+$ ccname="VAX"
 $ Dec_C_Version = ""
 $ cxxversion = ""
 $ use_threads = "F"
@@ -352,7 +358,8 @@ $!
 $Shut_up:
 $ IF F$Mode() .eqs. "BATCH"
 $ THEN
-$   STDOUT = F$GetQuI("DISPLAY_JOB","LOG_SPECIFICATION",,"THIS_JOB")
+$   STDOUT = F$PARSE(F$GETQUI("DISPLAY_ENTRY", "JOB_NAME"), -
+                    F$GETQUI("DISPLAY_ENTRY", "LOG_SPECIFICATION"), ".LOG")
 $   WRITE SYS$OUTPUT "Warning: Executing in batch mode.  To avoid file locking conflicts,"
 $   WRITE SYS$OUTPUT "output intended for SYS$OUTPUT will be sent to a new version"
 $   WRITE SYS$OUTPUT STDOUT
@@ -576,32 +583,87 @@ $! after finding MANIFEST (see above)
 $!: Configure runs within the UU subdirectory 
 $!
 $!: compute the number of columns on the terminal for proper question formatting
-$! (sfn, will assume 80-ish)
+$ IF F$MODE() .EQS. "BATCH"
+$! else it winds up being 512 in batch
+$ THEN COLUMNS = 80
+$ ELSE COLUMNS = F$GETDVI("SYS$OUTPUT","DEVBUFSIZ")
+$ ENDIF
+$! "-des" sets SYS$OUTPUT to NL: with a DEVBUFSIZ too large (512 again)
+$ IF COLUMNS .GT. 210 THEN COLUMNS = 80
+$! not sure if this would actually be needed - it hopefully will not hurt
+$ IF COLUMNS .LT. 40 THEN COLUMNS = 40
 $!
 $!: set up the echo used in my read              !sfn
 $!: now set up to do reads with possible shell escape and default assignment !sfn
 $ GOTO Beyond_myread
 $!
+$! The sub_rp splitting is intended to handle long symbols such as the dflt for
+$! extensions.
+$!
 $myread:
 $ ans = ""
+$ len_rp = F$LENGTH(rp)
 $ If (fastread)
 $ Then
-$   echo4 "''rp'"
+$   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 ""
-$   READ SYS$COMMAND/PROMPT="''rp'" ans
+$   IF len_rp .GT. 210
+$   THEN
+$     i_rp = 0
+$     firstread_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
+$   ELSE
+$     READ SYS$COMMAND/PROMPT="''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
+$     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
 $   ENDIF
 $   IF (ans .EQS. "&-s")
 $   THEN
 $     echo4 "(OK, I will run with -s after this question.)"
 $     echo ""
-$     READ SYS$COMMAND/PROMPT="''rp'" ans
+$     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
+$     ENDIF
 $     silent := true
 $     GOSUB Shut_up
 $   ENDIF
@@ -1134,9 +1196,12 @@ $   ENDIF
 $!
 $ 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 dflt = "y"
+$ ELSE dflt = "n"
+$ ENDIF
 $ IF .NOT.silent 
 $ THEN 
 $   echo ""
@@ -1147,11 +1212,15 @@ $   echo "process or the system wide level."
 $ ENDIF
 $ rp = "Invoke perl as a global symbol foreign command? [''dflt'] "
 $ GOSUB myread
-$ IF (.NOT.ans).AND.(ans.NES."") THEN perl_symbol = "false"
+$ IF (ans.EQS."") THEN ans = dflt
+$ IF (.NOT.ans) THEN perl_symbol = "false"
 $!
 $ IF (.NOT.perl_symbol)
 $ THEN
-$   dflt = "y"
+$   IF perl_verb .EQS. "DCLTABLES"
+$   THEN dflt = "n"
+$   ELSE dflt = "y"
+$   ENDIF
 $   IF .NOT.silent 
 $   THEN 
 $     echo ""
@@ -1161,7 +1230,8 @@ $     echo "would require write privilege)."
 $   ENDIF
 $   rp = "Invoke perl as a per process command verb? [ ''dflt' ] "
 $   GOSUB myread
-$   IF (.NOT.ans).AND.(ans.NES."")
+$   IF (ans.EQS."") THEN ans = dflt
+$   IF (.NOT.ans)
 $   THEN perl_verb = "DCLTABLES"
 $   ELSE perl_verb = "PROCESS"
 $   ENDIF
@@ -1214,12 +1284,20 @@ $     line = F$EDIT(line,"COMPRESS, TRIM")
 $     api_subversion = F$ELEMENT(2," ",line)
 $     got_api_subversion = "true"
 $   ENDIF
-$   IF (.NOT.got_patch).OR.(.NOT.got_sub) THEN GOTO Patchlevel_h_loop
+$   IF (.NOT. got_patch) .OR. -
+       (.NOT. got_sub) .OR. - 
+       (.NOT. got_api_revision) .OR. -
+       (.NOT. got_api_version) .OR. -
+       (.NOT. got_api_subversion) -
+      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")
 $ THEN
@@ -1595,13 +1673,14 @@ $   Mcc = ans
 $   IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans))
 $   THEN
 $     Mcc = "cc/decc"
-$     Using_Dec_C := Y
+$! CPQ ?
+$     ccname := DEC
 $     C_COMPILER_Replace = "CC=cc=''Mcc'"
 $   ENDIF
 $   IF F$LOCATE("cxx",F$EDIT(ans,"COLLAPSE,LOWERCASE")) .NE. F$LENGTH(ans)
 $   THEN
 $     Mcc = "cxx"
-$     using_cxx := Y
+$     ccname := CXX
 $     ld = ld_try
 $     C_COMPILER_Replace = "CC=cc=''Mcc'"
 $   ELSE ! Not_cxx
@@ -1612,12 +1691,12 @@ $       IF F$LOCATE("dec",dflt) .NE. F$LENGTH(dflt) .or. -
 $       THEN 
 $         C_COMPILER_Replace = "CC=cc=''Mcc'"
 $       ELSE
-$         Using_Dec_C := Y
+$         ccname := DEC
 $       ENDIF
 $     ELSE
 $       IF Mcc .EQS. "cc/decc"
 $       THEN
-$         Using_Dec_C := Y
+$         ccname := DEC
 $         C_COMPILER_Replace = "CC=cc=''Mcc'"
 $       ENDIF
 $     ENDIF
@@ -1626,18 +1705,18 @@ $ ELSE
 $   Mcc = dflt
 $   IF Mcc .EQS. "cc/decc"
 $   THEN
-$     Using_Dec_C := Y
+$     ccname := DEC
 $     C_COMPILER_Replace = "CC=cc=''Mcc'"
 $   ENDIF
 $   IF Mcc .EQS. "gcc"
 $   THEN
-$     Using_Gnu_C := Y
+$     ccname := GCC
 $     C_COMPILER_Replace = "CC=cc=''Mcc'"
 $   ENDIF
 $ ENDIF
 $Decc_Version_check:
 $ ccversion=""
-$ IF Using_Dec_C
+$ IF ccname .EQS. "DEC"
 $ THEN
 $   echo ""
 $   echo4 "Checking for the Dec C version number..."
@@ -1690,7 +1769,7 @@ $   DELETE/NOLOG/NOCONFIRM deccvers.*;
 $ ENDIF
 $Gcc_check:
 $ gccversion = ""
-$ IF Using_Gnu_C
+$ IF ccname .EQS. "GCC"
 $ THEN
 $   vaxcrtl_olb = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB")
 $   vaxcrtl_exe = F$SEARCH("SYS$SHARE:VAXCRTL.EXE")
@@ -1797,14 +1876,14 @@ $       GOTO Host_name
 $     ELSE 
 $       echo "You are using GNU cc ''line'"
 $       gccversion = line
-$       Using_Gnu_C := Y
+$       ccname := "GCC"
 $       C_COMPILER_Replace = "CC=cc=''Mcc'"
 $       GOTO Include_dirs
 $     ENDIF
 $   ENDIF
 $ ENDIF
 $Cxx_Version_check:
-$ IF using_cxx
+$ IF ccname .EQS. "CXX"
 $ THEN
 $   OPEN/WRITE CONFIG cxxvers.c
 $   WRITE CONFIG "#include <stdio.h>"
@@ -1916,6 +1995,10 @@ $  IF myhostname.eqs."".and. -
       F$TRNLNM("UCX$INET_HOST") .nes. "" .and. -
       F$TRNLNM("UCX$INET_DOMAIN") .nes. "" THEN - 
      myhostname = F$TRNLNM("UCX$INET_HOST") + "." + F$TRNLNM("UCX$INET_DOMAIN") 
+$  IF myhostname.eqs."".and. -
+      F$TRNLNM("TCPIP$INET_HOST") .nes. "" .and. -
+      F$TRNLNM("TCPIP$INET_DOMAIN") .nes. "" THEN - 
+     myhostname = F$TRNLNM("TCPIP$INET_HOST") + "." + F$TRNLNM("TCPIP$INET_DOMAIN") 
 $  IF myhostname.eqs."" THEN myhostname = F$TRNLNM("TCPWARE_DOMAINNAME")
 $  IF myhostname.eqs."" THEN myhostname = F$TRNLNM("NEWS_ADDRESS")
 $  IF myhostname.eqs."" THEN myhostname = F$TRNLNM("SYS$NODE") - "::"
@@ -1969,12 +2052,15 @@ is most probably close to the reality but may not be valid from outside
 your organization...
 $   EOD
 $ ENDIF
-$ dflt = "''cf_by'@''myhostname'"+"''mydomain'"
-$ rp = "What is your e-mail address? [''dflt'] "
-$ GOSUB myread
-$ IF ans .nes. ""
-$ THEN cf_email = ans
-$ ELSE cf_email = dflt
+$ IF F$TYPE(cf_email) .EQS. "" 
+$ THEN 
+$   dflt = "''cf_by'@''myhostname'"+"''mydomain'"
+$   rp = "What is your e-mail address? [''dflt'] "
+$   GOSUB myread
+$   IF ans .nes. ""
+$   THEN cf_email = ans
+$   ELSE cf_email = dflt
+$   ENDIF
 $ ENDIF
 $!
 $ IF .NOT.silent 
@@ -2019,7 +2105,7 @@ $!: compute shared library extension
 $!: Looking for optional libraries
 $!: see if nm is to be used to determine whether a symbol is defined or not
 $!: get list of predefined functions in a handy place
-$!: see if we have sigaction
+$!: see if we have sigaction or sigprocmask
 $!: see whether socketshr exists
 $ IF (F$SEARCH(F$PARSE("SocketShr","Sys$Share:.Exe")).NES."")
 $ THEN
@@ -2029,7 +2115,8 @@ $   echo4 "Hmm... Looks like you have SOCKETSHR Berkeley networking support."
 $ ELSE
 $   Has_socketshr     = "F"
 $ ENDIF
-$ IF (Dec_C_Version .GE. 50200000) .or. using_cxx
+$ IF (ccname .EQS. "DEC" .AND. Dec_C_Version .GE. 50200000) .OR. -
+     (ccname .EQS. "CXX")
 $ THEN
 $   Has_Dec_C_Sockets = "T"
 $   echo ""
@@ -2061,6 +2148,10 @@ $   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
@@ -2161,7 +2252,7 @@ $   ENDIF
 $ ENDIF ! AXP && >= 7.1
 $!
 $! Ask about threads, if appropriate
-$ IF Using_Dec_C .OR. using_cxx
+$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
 $ THEN
 $   echo ""
 $   echo "This version of Perl can be built with threads. While really nifty,"
@@ -2359,6 +2450,43 @@ $   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 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 - "Socket"              ! on VMS is optional static extension
+$ 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"
@@ -2367,51 +2495,10 @@ $ echo "you might, for example, want to build GDBM_File instead of"
 $ echo "SDBM_File if you have the GDBM library built on your machine."
 $ echo ""
 $ echo "Which modules do you want to build into perl?"
-$! we need to add Byteloader to this list:
-$ dflt = "re Fcntl Encode Errno File::Glob IO Opcode Devel::Peek Devel::DProf Data::Dumper attrs VMS::Stdio VMS::DCLsym B SDBM_File Storable Thread Sys::Hostname"
-$ IF Using_Dec_C .OR. using_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'"
+$ if ans .eqs. "" then ans = "''dflt'"
+$ extensions = F$EDIT(ans,"TRIM,COMPRESS")
 $!
 $! %Config-I-VMS, determine build/make utility here (make gmake mmk mms)
 $ echo ""
@@ -2594,6 +2681,39 @@ $     GOTO Clean_up
 $   ENDIF
 $ ENDIF
 $!
+$! PerlIO abstraction
+$!
+$ dflt = "n"
+$ IF F$TYPE(useperlio) .NES. ""
+$ THEN
+$   IF useperlio THEN dflt = "y"
+$   IF useperlio .EQS. "define" THEN dflt = "y"
+$ ENDIF
+$ IF .NOT. silent
+$ THEN
+$   echo "Previous version 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.
+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 + "'."
+$ ENDIF
+$ rp = "Use the experimental PerlIO abstraction layer? [''dflt'] "
+$ GOSUB myread
+$ IF ans .EQS. "" THEN ans = dflt
+$ IF ans
+$ THEN
+$   useperlio = "define"
+$ ELSE
+$   echo "Ok, doing things the stdio way."
+$   useperlio = "undef"
+$ ENDIF
+$!
 $ echo ""
 $ echo4 "Checking the C run-time library."
 $!
@@ -2604,7 +2724,6 @@ $!  - use built config.sh to take config_h.SH -> config.h
 $!  - also take vms/descrip_mms.template -> descrip.mms (VMS Makefile)
 $!              vms/Makefile.in -> Makefile. (VMS GNU Makefile?)
 $!              vms/Makefile.SH -> Makefile. (VMS GNU Makefile?)
-$!  - build make_ext.com extension builder procedure.
 $!
 $! Note for folks from other platforms changing things in here:
 $!
@@ -2653,11 +2772,11 @@ $ vms_ver = F$EXTRACT(1,3, osvers)
 $ IF F$LENGTH(Mcc) .EQ. 0 THEN Mcc := "cc"
 $ MCC = f$edit(mcc, "UPCASE")
 $ C_Compiler_Replace := "CC=CC=''Mcc'''ccflags'"
-$ IF Using_Dec_C
+$ IF ccname .EQS. "DEC"
 $ THEN
 $   Checkcc := "''Mcc'/prefix=all"
 $ ELSE
-$   IF using_cxx
+$   IF ccname .EQS. "CXX"
 $   THEN
 $     Checkcc := cxx
 $   ELSE
@@ -2684,6 +2803,7 @@ $ THEN
 $   use64bitint = "define"
 $   uselargefiles = "define"
 $   uselongdouble = "define"
+$   alignbytes="16"
 $   usemorebits = "define"
 $ ELSE
 $   use64bitint = "undef"
@@ -2742,7 +2862,7 @@ $   libs="SYS$SHARE:CMA$LIB_SHR.EXE/SHARE SYS$SHARE:CMA$RTL.EXE/SHARE SYS$SHARE:
 $ ELSE
 $   libs=" "
 $ ENDIF
-$ IF Using_Dec_C .OR. using_cxx
+$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
 $ THEN
 $   libc="(DECCRTL)"
 $ ELSE
@@ -2861,7 +2981,7 @@ $ CS := "close CONFIG"
 $ DS := "delete/nolog/noconfirm []try.*;*"
 $ Needs_Opt := N
 $ good_compile = %X10B90001
-$ IF Using_Gnu_C
+$ IF ccname .EQS. "GCC"
 $ THEN
 $   open/write OPTCHAN []try.opt
 $   write OPTCHAN "Gnu_CC:[000000]gcclib.olb/library"
@@ -2870,7 +2990,7 @@ $   Close OPTCHAN
 $   Needs_Opt := Y
 $   good_compile = %X10000001
 $ ENDIF
-$ IF using_cxx
+$ IF ccname .EQS. "CXX"
 $ THEN
 $   good_compile = %X15F60001
 $ ENDIF
@@ -3596,6 +3716,42 @@ $ tmp = "strtoll"
 $ GOSUB inlibc
 $ d_strtoll = tmp
 $!
+$! Check for strtoq
+$!
+$ OS
+$ WS "#if defined(__DECC) || defined(__DECCXX)"
+$ WS "#include <stdlib.h>"
+$ WS "#endif"
+$ WS "#include <string.h>"
+$ WS "int main()"
+$ WS "{"
+$ WS "__int64 result;"
+$ WS "result = strtoq(""123123"", NULL, 10);"
+$ WS "exit(0);"
+$ WS "}"
+$ CS
+$ tmp = "strtoq"
+$ GOSUB inlibc
+$ d_strtoq = tmp
+$!
+$! Check for strtoq
+$!
+$ OS
+$ WS "#if defined(__DECC) || defined(__DECCXX)"
+$ WS "#include <stdlib.h>"
+$ WS "#endif"
+$ WS "#include <string.h>"
+$ WS "int main()"
+$ WS "{"
+$ WS "__int64 result;"
+$ WS "result = strtoq(""123123"", NULL, 10);"
+$ WS "exit(0);"
+$ WS "}"
+$ CS
+$ tmp = "strtoq"
+$ GOSUB inlibc
+$ d_strtoq = tmp
+$!
 $! Check for strtold
 $!
 $ OS
@@ -3813,6 +3969,43 @@ $ tmp = "setvbuf"
 $ GOSUB inlibc
 $ d_setvbuf = tmp
 $!
+$! see if sfio.h is available
+$! see if sfio library is available
+$! Ok, but do we want to use it.
+$! IF F$TYPE(usesfio) .EQS. "" THEN usesfio = "undef"
+$! IF val .EQS. "define"
+$! THEN
+$!   IF usesfio .EQS. "define"
+$!   THEN dflt = "y"
+$!   ELSE dflt = "n"
+$!   ENDIF
+$!   echo "''package' can use the sfio library, but it is experimental."
+$!   IF useperlio .EQS. "undef"
+$!   THEN
+$!     echo "For sfio also the PerlIO abstraction layer is needed."
+$!     echo "Earlier you said you would not want that."
+$!   ENDIF
+$!   rp="You seem to have sfio available, do you want to try using it? [''dflt'] "
+$!   GOSUB myread
+$!   IF ans .EQS. "" THEN ans = dflt
+$!   IF ans
+$!   THEN
+$!     echo "Ok, turning on both sfio and PerlIO, then."
+$!     useperlio="define"
+$!     val="define"
+$!   ELSE
+$!     echo "Ok, avoiding sfio this time.  I'll use stdio instead."
+$!     val="undef"
+$!   ENDIF
+$! ELSE
+$!   IF usesfio .EQS. "define"
+$!   THEN
+$!     echo4 "Sorry, cannot find sfio on this machine."
+$!     echo4 "Ignoring your setting of usesfio=''usesfio'."
+$!     val="undef"
+$!   ENDIF
+$! ENDIF
+$!
 $! Check for setenv
 $!
 $ OS
@@ -4350,7 +4543,7 @@ $ IF F$SEARCH("try.obj").NES."" THEN DELETE/NOLOG/NOCONFIRM try.obj;*
 $ IF F$SEARCH("try.exe").NES."" THEN DELETE/NOLOG/NOCONFIRM try.exe;*
 $ IF F$SEARCH("try.opt").NES."" THEN DELETE/NOLOG/NOCONFIRM try.opt;*
 $ IF F$SEARCH("try.out").NES."" THEN DELETE/NOLOG/NOCONFIRM try.out;*
-$ IF using_cxx
+$ IF ccname .EQS. "CXX"
 $ THEN
 $   CALL Cxx_demangler_cleanup
 $ ENDIF
@@ -4358,7 +4551,7 @@ $!
 $! Some that are compiler or VMS version sensitive
 $!
 $! Gnu C stuff
-$ IF Using_Gnu_C
+$ IF ccname .EQS. "GCC"
 $ THEN
 $   d_attribut="define"
 $   vms_cc_type="gcc"
@@ -4368,12 +4561,14 @@ $   d_attribut="undef"
 $ ENDIF
 $!
 $! Dec C >= 5.2 and VMS ver >= 7.0
-$ IF (Using_Dec_C).AND.(F$INTEGER(Dec_C_Version).GE.50200000).AND.(vms_ver .GES. "7.0")
+$ IF (ccname .EQS. "DEC") .AND. -
+     (F$INTEGER(Dec_C_Version).GE.50200000) .AND. (vms_ver .GES. "7.0")
 $ THEN
 $   d_bcmp="define"
 $   d_gettimeod="define"
 $   d_uname="define"
 $   d_sigaction="define"
+$   d_sigprocmask="define"
 $   d_truncate="define"
 $   d_wait4="define"
 $   d_index="define"
@@ -4386,6 +4581,7 @@ $   sig_name_init = psnwc1 + psnwc2 + psnwc3
 $   sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 64"",0"
 $   sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,64,0"
 $!   perl_sig_num_with_commas=sig_num_init
+$   sig_size="36"
 $   uidtype="uid_t"
 $   d_pathconf="define"
 $   d_fpathconf="define"
@@ -4397,6 +4593,7 @@ $   d_gettimeod="undef"
 $   d_bcmp="undef"
 $   d_uname="undef"
 $   d_sigaction="undef"
+$   d_sigprocmask="undef"
 $   d_truncate="undef"
 $   d_wait4="undef"
 $   d_index="undef"
@@ -4407,15 +4604,39 @@ $   sig_name_init = psnwc1 + psnwc2
 $   sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17"",0"
 $   sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,0"
 $!   perl_sig_num_with_commas=sig_num_init
+$   sig_size="19"
 $   uidtype="unsigned int"
 $   d_pathconf="undef"
 $   d_fpathconf="undef"
 $   d_sysconf="undef"
 $   d_sigsetjmp="undef"
 $ ENDIF
+$!: see if tzname[] exists
+$ OS
+$ WS "#include <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_phostname="define"
+$ ELSE
+$   d_phostname="undef"
+$ ENDIF
 $!
 $! Dec C alone
-$ IF Using_Dec_C
+$ IF ccname .EQS. "DEC"
 $ THEN
 $   d_mbstowcs="define"
 $   d_mbtowc="define"
@@ -4451,7 +4672,7 @@ $   d_locconv="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
@@ -4476,7 +4697,7 @@ $   d_gethostprotos="define"
 $   d_getnetprotos="define"
 $   d_getprotoprotos="define"
 $   d_getservprotos="define"
-$   IF Using_Dec_C .OR. using_cxx
+$   IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
 $   THEN
 $     socksizetype="unsigned int"
 $   ELSE
@@ -4663,6 +4884,7 @@ $ ivdformat="""ld"""
 $ uvuformat="""lu"""
 $ uvoformat="""lo"""
 $ uvxformat="""lx"""
+$ uvXUformat="""lX"""
 $! uselongdouble?
 $ nveformat="""e"""
 $ nvfformat="""f"""
@@ -4672,12 +4894,12 @@ $! Finally the composite ones. All config
 $!
 $ myuname="''osname' ''myname' ''osvers' ''F$EDIT(hwname, "TRIM")'"
 $!
-$ IF Using_Dec_C .AND. (.NOT. using_cxx)
+$ IF ccname .EQS. "DEC"
 $ THEN
 $   ccflags="/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=''obj_ext'/NoList''ccflags'"
 $ ENDIF
 $ i_dirent = "undef"
-$ IF using_cxx
+$ IF ccname .EQS. "CXX"
 $ THEN
 $   i_dirent = "define"
 $   ccflags="/Include=[]/Standard=ANSI/Prefix=All/Obj=''obj_ext'/NoList''ccflags'"
@@ -4685,9 +4907,11 @@ $ ENDIF
 $ IF use_vmsdebug_perl
 $ THEN
 $   optimize="/Debug/NoOpt"
+$   ldflags="/Debug/Trace/Map"
 $   dbgprefix = "DBG"
 $ ELSE
 $   optimize= ""
+$   ldflags="/NoTrace/NoMap"
 $   dbgprefix = ""
 $ ENDIF
 $!
@@ -4712,10 +4936,13 @@ $ WC ""
 $ WC "CONFIG='true'"
 $ WC "Makefile_SH='" + Makefile_SH + "'"
 $ WC "Mcc='" + Mcc + "'"
-$! WC "PERL_SUBVERSION='" + subversion + "'" ! VMS specific to descrip_mms.template
-$ WC "PERL_VERSION='" + patchlevel + "'" ! VMS specific to descrip_mms.template
+$ WC "PERL_REVISION='" + revision + "'"
+$ WC "PERL_VERSION='" + patchlevel + "'" 
+$ WC "PERL_SUBVERSION='" + subversion + "'" 
+$ WC "PERL_API_VERSION='" + api_version + "'" 
+$ WC "PERL_API_SUBVERSION='" + api_subversion + "'"
 $ WC "alignbytes='" + alignbytes + "'"
-$ WC "aphostname='" + "'"
+$ WC "aphostname='write sys$output f$edit(f$getsyi(\""SCSNODE\""),\""TRIM,LOWERCASE\"")'"
 $ WC "ar='" + "'"
 $ WC "archlib='" + archlib + "'"
 $ WC "archlibexp='" + archlibexp + "'"
@@ -4730,6 +4957,7 @@ $ WC "cc='" + perl_cc + "'"
 $ WC "cccdlflags='" + cccdlflags + "'"
 $ WC "ccdlflags='" + ccdlflags + "'"
 $ WC "ccflags='" + ccflags + "'"
+$ WC "ccname='" + ccname + "'"
 $ WC "ccversion='" + ccversion + "'"
 $ WC "cf_by='" + cf_by + "'"
 $ WC "cf_email='" + cf_email + "'"
@@ -4742,13 +4970,12 @@ $ 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 + "'"
 $ WC "d_PRIEldbl='" + d_PRIEUldbl + "'"
 $ WC "d_PRIFldbl='" + d_PRIFUldbl + "'"
 $ WC "d_PRIGldbl='" + d_PRIGUldbl + "'"
 $ WC "d_PRIX64='" + d_PRIXU64 + "'"
+$ WC "d_PRId64='" + d_PRId64 + "'"
 $ WC "d_PRIeldbl='" + d_PRIeldbl + "'"
 $ WC "d_PRIfldbl='" + d_PRIfldbl + "'"
 $ WC "d_PRIgldbl='" + d_PRIgldbl + "'"
@@ -4756,6 +4983,7 @@ $ WC "d_PRIo64='" + d_PRIo64 + "'"
 $ WC "d_PRIu64='" + d_PRIu64 + "'"
 $ WC "d_PRIx64='" + d_PRIx64 + "'"
 $ WC "d_SCNfldbl='" + d_SCNfldbl + "'"
+$ WC "d__fwalk='undef'"
 $ WC "d_access='" + d_access + "'"
 $ WC "d_accessx='undef'"
 $ WC "d_alarm='define'"
@@ -4767,8 +4995,8 @@ $ WC "d_bcmp='" + d_bcmp + "'"
 $ WC "d_bcopy='" + d_bcopy + "'"
 $ WC "d_bincompat3='undef'"
 $ WC "d_bincompat5005='undef'"
-$ WC "d_bsdgetpgrp='undef'"
 $! WC "d_bsdpgrp='undef'"
+$ WC "d_bsdgetpgrp='undef'"
 $ WC "d_bsdsetpgrp='undef'"
 $ WC "d_bzero='" + d_bzero + "'"
 $ WC "d_casti32='define'"
@@ -4783,6 +5011,7 @@ $ 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_dirnamlen='define'"
 $ WC "d_dlerror='undef'"
@@ -4807,6 +5036,7 @@ $ WC "d_fd_set='" + d_fd_set + "'"
 $ WC "d_fgetpos='define'"
 $ WC "d_flexfnam='define'"
 $ WC "d_flock='undef'"
+$ WC "d_flockproto='undef'"
 $ WC "d_fork='undef'"
 $ WC "d_fpathconf='" + d_fpathconf + "'"
 $ WC "d_fpos64_t='" + d_fpos64_t + "'"
@@ -4818,7 +5048,7 @@ $ WC "d_fstatfs='undef'"
 $ WC "d_fstatvfs='undef'"
 $ WC "d_fsync='undef'"
 $ WC "d_ftello='undef'"
-$ WC "d_getcwd='undef'"
+$ WC "d_getcwd='define'"
 $ WC "d_getespwnam='undef'"
 $ WC "d_getfsstat='undef'"
 $ WC "d_getgrent='define'"
@@ -4828,6 +5058,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_getlogin='define'"
 $ WC "d_getmnt='undef'"
 $ WC "d_getmntent='undef'"
@@ -4893,6 +5124,7 @@ $ WC "d_mkstemps='" + d_mkstemps + "'"
 $ WC "d_mktime='" + d_mktime + "'"
 $ WC "d_mmap='undef'"
 $ WC "d_modfl='" + d_modfl + "'"
+$ WC "d_modfl_pow32_bug='undef'"
 $ WC "d_mprotect='undef'"
 $ WC "d_msg='undef'"
 $ WC "d_msg_ctrunc='undef'"
@@ -4915,7 +5147,7 @@ $ WC "d_open3='define'"
 $ WC "d_pathconf='" + d_pathconf + "'"
 $ WC "d_pause='define'"
 $ WC "d_perl_otherlibdirs='undef'"
-$ WC "d_phostname='undef'"
+$ WC "d_phostname='" + d_phostname + "'"
 $ WC "d_pipe='define'"
 $ WC "d_poll='undef'"
 $ WC "d_pthread_yield='" + d_pthread_yield + "'"
@@ -4933,6 +5165,7 @@ $ WC "d_quad='" + d_quad + "'"
 $ WC "d_readdir='define'"
 $ WC "d_readlink='undef'"
 $ WC "d_readv='undef'"
+$ WC "d_realpath='undef'"
 $ WC "d_recvmsg='undef'"
 $ WC "d_rename='define'"
 $ WC "d_rewinddir='define'"
@@ -4940,7 +5173,7 @@ $ WC "d_rmdir='define'"
 $ WC "d_safebcpy='undef'"
 $ WC "d_safemcpy='define'"
 $ WC "d_sanemcmp='define'"
-$ WC "d_sbrkproto='undef'"
+$ WC "d_sbrkproto='define'"
 $ WC "d_sched_yield='" + d_sched_yield + "'"
 $ WC "d_scm_rights='undef'"
 $ WC "d_seekdir='define'"
@@ -4955,6 +5188,7 @@ $ WC "d_seteuid='undef'"
 $ WC "d_setgrent='undef'"
 $ WC "d_setgrps='undef'"
 $ WC "d_sethent='" + d_sethent + "'"
+$ WC "d_setitimer='undef'"
 $ WC "d_setlinebuf='undef'"
 $ WC "d_setlocale='" + d_setlocale + "'"
 $ WC "d_setnent='" + d_setnent + "'"
@@ -4978,20 +5212,27 @@ $ WC "d_sfio='undef'"
 $ WC "d_shm='undef'"
 $ WC "d_shmatprototype='undef'"
 $ WC "d_sigaction='" + d_sigaction + "'"
+$ WC "d_sigprocmask='" + d_sigprocmask + "'"
 $ WC "d_sigsetjmp='" + d_sigsetjmp + "'"
+$ WC "d_sockatmark='undef'"
+$ WC "d_sockatmarkproto='undef'"
 $ WC "d_socket='" + d_socket + "'"
 $ WC "d_socklen_t='" + d_socklen_t + "'"
 $ WC "d_sockpair='undef'"
 $ WC "d_socks5_init='undef'"
 $ WC "d_sqrtl='define'"
+$ WC "d_sresgproto='undef'"
+$ WC "d_sresgproto='undef'"
+$ WC "d_sresproto='undef'"
+$ WC "d_sresuproto='undef'"
 $ WC "d_statblks='undef'"
 $ WC "d_statfs_f_flags='undef'"
 $ WC "d_statfs_s='undef'"
 $ WC "d_statfsflags='undef'"
 $ WC "d_stdio_cnt_lval='" + d_stdio_cnt_lval + "'"
 $ WC "d_stdio_ptr_lval='" + d_stdio_ptr_lval + "'"
-$ WC "d_stdio_ptr_lval_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 + "'"
@@ -5000,10 +5241,12 @@ $ WC "d_strcoll='" + d_strcoll + "'"
 $ WC "d_strctcpy='define'"
 $ WC "d_strerrm='strerror((e),vaxc$errno)'"
 $ WC "d_strerror='define'"
+$ WC "d_strftime='define'"
 $ WC "d_strtod='define'"
 $ WC "d_strtol='define'"
 $ WC "d_strtold='" + d_strtold + "'"
 $ WC "d_strtoll='" + d_strtoll + "'"
+$ WC "d_strtoq='define'"
 $ WC "d_strtoul='define'"
 $ WC "d_strtoull='" + d_strtoull + "'"
 $ WC "d_strtouq='" + d_strtouq + "'"
@@ -5011,6 +5254,7 @@ $ WC "d_strxfrm='" + d_strxfrm  + "'"
 $ WC "d_suidsafe='undef'"
 $ WC "d_symlink='undef'"
 $ WC "d_syscall='undef'"
+$ WC "d_syscallproto='undef'"
 $ WC "d_sysconf='" + d_sysconf + "'"
 $ WC "d_syserrlst='undef'"
 $ WC "d_system='define'"
@@ -5020,11 +5264,15 @@ $ WC "d_telldir='define'"
 $ WC "d_telldirproto='define'"
 $ WC "d_times='define'"
 $ WC "d_truncate='" + d_truncate + "'"
-$ WC "d_tzname='undef'"
+$ WC "d_tzname='" + d_tzname + "'"
+$ WC "d_u32align='define'"
+$ WC "d_ualarm='undef'"
 $ 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_ustat='undef'"
 $ WC "d_vendorarch='undef'"
 $ WC "d_vendorlib='undef'"
@@ -5050,13 +5298,23 @@ $ WC "dlobj='" + dlobj + "'"
 $ WC "dlsrc='dl_vms.c'"
 $ WC "doublesize='" + doublesize + "'"
 $ WC "drand01='" + drand01 + "'"
-$ WC "dynamic_ext='" + extensions + "'"
+$!
+$! The extensions symbol may be quite long
+$!
+$ tmp = "dynamic_ext='" + extensions + "'"
+$ WC/symbol tmp
+$ DELETE/SYMBOL tmp
 $ WC "eagain=' '"
 $ WC "ebcdic='undef'"
 $ WC "embedmymalloc='" + mymalloc + "'"
 $ 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'"
@@ -5130,6 +5388,7 @@ $ WC "i_sysparam='undef'"
 $ WC "i_sysresrc='undef'"
 $ WC "i_syssecrt='" + i_syssecrt + "'"
 $ WC "i_sysselct='undef'"
+$ WC "i_syssockio='undef'"
 $ WC "i_sysstat='define'"
 $ WC "i_sysstatfs='undef'"
 $ WC "i_sysstatvfs='undef'"
@@ -5166,10 +5425,15 @@ $ WC "intsize='" + intsize + "'"
 $ WC "ivdformat='" + ivdformat + "'"
 $ WC "ivsize='" + ivsize + "'"
 $ WC "ivtype='" + ivtype + "'"
-$ WC "known_extensions='" + known_extensions + "'"
+$!
+$! The known_extensions symbol may be quite long
+$!
+$ tmp = "known_extensions='" + known_extensions + "'"
+$ WC/symbol tmp
+$ DELETE/SYMBOL tmp
 $ WC "ld='" + ld + "'"
 $ WC "lddlflags='/Share'"
-$ WC "ldflags='/NoTrace/NoMap'"
+$ WC "ldflags='" + ldflags + "'"
 $ WC "lib_ext='" + lib_ext + "'"
 $ WC "libc='" + libc + "'"
 $ WC "libpth='/sys$share /sys$library'"
@@ -5190,6 +5454,7 @@ $ WC "multiarch='undef'"
 $ WC "mydomain='" + mydomain + "'"
 $ WC "myhostname='" + myhostname + "'"
 $ WC "myuname='" + myuname + "'"
+$ WC "need_va_copy='undef'"
 $ WC "netdb_hlen_type='" + netdb_hlen_type + "'"
 $ WC "netdb_host_type='" + netdb_host_type + "'"
 $ WC "netdb_name_type='" + netdb_name_type + "'"
@@ -5249,7 +5514,7 @@ $ WC "seedfunc='" + seedfunc + "'"
 $ WC "selectminbits='32'"
 $ WC "selecttype='" + selecttype + "'"
 $ WC "sh='MCR'"
-$ WC "shmattype='" + "'"
+$ WC "shmattype='" + " '"
 $ WC "shortsize='" + shortsize + "'"
 $ WC "shrplib='define'"
 $ WC "sig_name='" + sig_name + "'"
@@ -5258,6 +5523,7 @@ $ WC/symbol tmp
 $ DELETE/SYMBOL tmp
 $ WC "sig_num='" + sig_num + "'"
 $ WC "sig_num_init='" + sig_num_init + "'"
+$ WC "sig_size='" + sig_size + "'"
 $ WC "signal_t='" + signal_t + "'"
 $ WC "sitearch='" + sitearch + "'"
 $ WC "sitearchexp='" + sitearchexp + "'"
@@ -5272,7 +5538,7 @@ $ WC "spitshell='write sys$output '"
 $ WC "src='" + src + "'"
 $ WC "ssizetype='int'"
 $ WC "startperl=" + startperl ! This one's special--no enclosing single quotes
-$ WC "static_ext='" + "'"
+$ WC "static_ext='" + static_ext + "'"
 $ WC "stdchar='" + stdchar + "'"
 $ WC "stdio_base='((*fp)->_base)'"
 $ WC "stdio_bufsiz='((*fp)->_cnt + (*fp)->_ptr - (*fp)->_base)'"
@@ -5305,7 +5571,7 @@ $ WC "uselongdouble='" + uselongdouble + "'"
 $ WC "usemorebits='" + usemorebits + "'"
 $ WC "usemultiplicity='" + usemultiplicity + "'"
 $ WC "usemymalloc='" + usemymalloc + "'"
-$ WC "useperlio='undef'"
+$ WC "useperlio='" + useperlio + "'"
 $ WC "useposix='false'"
 $ WC "usesocks='undef'"
 $ WC "usethreads='" + usethreads + "'"
@@ -5315,6 +5581,7 @@ $ WC "uvsize='" + uvsize + "'"
 $ WC "uvtype='" + uvtype + "'"
 $ WC "uvuformat='" + uvuformat + "'"
 $ WC "uvxformat='" + uvxformat + "'"
+$ WC "uvXUformat='" + uvXUformat + "'"
 $ WC "vendorarchexp='" + "'"
 $ WC "vendorlib_stem='" + "'"
 $ WC "vendorlibexp='" + "'"
@@ -5324,7 +5591,7 @@ $ WC "vms_prefix='" + vms_prefix + "'" ! VMS specific
 $ WC "vms_ver='" + vms_ver + "'" ! VMS specific
 $ WC "voidflags='15'"
 $ WC "xs_apiversion='" + version + "'"
-$ WC "CONFIGDOTSH='true'"
+$ WC "PERL_CONFIG_SH='true'"
 $!
 $! ##END WRITE NEW CONSTANTS HERE##
 $!
@@ -5337,7 +5604,7 @@ $ 'Perl_CC' munchconfig.c
 $ IF Needs_Opt
 $ THEN
 $   OPEN/WRITE CONFIG []munchconfig.opt
-$   IF Using_Gnu_C
+$   IF ccname .EQS. "GCC"
 $   THEN
 $     WRITE CONFIG "Gnu_CC:[000000]gcclib.olb/library"
 $   ENDIF
@@ -5350,7 +5617,7 @@ $   'ld' munchconfig.obj
 $ ENDIF
 $ IF F$SEARCH("munchconfig.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig.obj;
 $ IF F$SEARCH("munchconfig.c") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig.c;
-$ IF using_cxx
+$ IF ccname .EQS. "CXX"
 $ THEN
 $   CALL Cxx_demangler_cleanup
 $ ENDIF
@@ -5400,7 +5667,7 @@ $ IF use_two_pot_malloc THEN WC "#define TWO_POT_OPTIMIZE"
 $ IF mymalloc THEN WC "#define EMBEDMYMALLOC"
 $ IF use_pack_malloc THEN WC "#define PACK_MALLOC"
 $ IF use_debugmalloc THEN WC "#define DEBUGGING_MSTATS"
-$ IF Using_Gnu_C THEN WC "#define GNUC_ATTRIBUTE_CHECK"
+$ IF ccname .EQS. "GCC" THEN WC "#define GNUC_ATTRIBUTE_CHECK"
 $ IF (Has_Dec_C_Sockets)
 $ THEN
 $    WC "#define VMS_DO_SOCKETS"
@@ -5438,19 +5705,19 @@ $ DELETE/NOLOG [-]CONFIG.MAIN;*
 $ DELETE/NOLOG [-]CONFIG.LOCAL;*
 $ DELETE/NOLOG [-]CONFIG.FDL;*
 $!
-$ IF Using_Dec_C
+$ IF ccname .EQS. "DEC"
 $ THEN
 $   DECC_REPLACE = "DECC=decc=1"
 $ ELSE
 $   DECC_REPLACE = "DECC="
 $ ENDIF
-$ IF using_cxx
+$ IF ccname .EQS. "CXX"
 $ THEN
 $   DECCXX_REPLACE = "DECCXX=DECCXX=1"
 $ ELSE
 $   DECCXX_REPLACE = "DECCXX="
 $ ENDIF
-$ IF Using_Gnu_C
+$ IF ccname .EQS. "GCC"
 $ THEN
 $   GNUC_REPLACE = "GNUC=gnuc=1"
 $ ELSE
@@ -5492,6 +5759,7 @@ $ mcr []munchconfig 'config_sh' 'Makefile_SH' "''DECC_REPLACE'" -
  "''Thread_Live_Dangerously'" "PV=''version'" "FLAGS=FLAGS=''extra_flags'"
 $! Clean up after ourselves
 $ DELETE/NOLOG/NOCONFIRM []munchconfig.exe;
+$!
 $ echo4 "Extracting make_ext.com (without variable substitutions)"
 $ Create Sys$Disk:[-]make_ext.com
 $ Deck/Dollar="$EndOfTpl$"
@@ -5500,17 +5768,31 @@ $!   NOTE: This file is extracted as part of the VMS configuration process.
 $!   Any changes made to it directly will be lost.  If you need to make any
 $!   changes, please edit the template in Configure.Com instead.
 $    def = F$Environment("Default")
-$    exts1 = F$Edit(p1,"Compress")
-$    p2 = F$Edit(p2,"Upcase,Compress,Trim")
-$    If F$Locate("MCR ",p2).eq.0 Then p2 = F$Extract(3,255,p2)
-$    miniperl = "$" + F$Search(F$Parse(p2,".Exe"))
-$    makeutil = p3
-$    if f$type('p3') .nes. "" then makeutil = 'p3'
-$    targ = F$Edit(p4,"Lowercase")
+$!   p1 - how to invoke miniperl (passed in from descrip.mms)
+$    p1 = F$Edit(p1,"Upcase,Compress,Trim")
+$    If F$Locate("MCR ",p1).eq.0 Then p1 = F$Extract(3,255,p1)
+$    miniperl = "$" + F$Search(F$Parse(p1,".Exe"))
+$!   p2 - how to invoke local make utility (passed in from descrip.mms)
+$    makeutil = p2
+$    if f$type('p2') .nes. "" then makeutil = 'p2'
+$!   p3 - make target (passed in from descrip.mms)
+$    targ = F$Edit(p3,"Lowercase")
+$    sts = 1
+$    extensions = ""
+$    open/read CONFIG config.sh
+$ find_ext_loop:
+$    read/end=end_ext_loop CONFIG line
+$    if (f$extract(0,12,line) .NES. "extensions='")
+$    then goto find_ext_loop
+$    else extensions = f$extract(12,f$length(line),line) - "'"
+$    endif
+$ end_ext_loop:
+$    close CONFIG
+$    extensions = f$edit(extensions,"TRIM,COMPRESS")
 $    i = 0
 $ next_ext:
-$    ext = F$Element(i," ",p1)
-$    If ext .eqs. " " Then Goto done
+$    ext = f$element(i," ",extensions)
+$    If ext .eqs. " " .or. ext .eqs. "" Then Goto done
 $    Define/User_mode Perl_Env_Tables CLISYM_LOCAL
 $    miniperl
 $    deck
@@ -5552,6 +5834,49 @@ $    Exit sts
 $!-- make_ext.com
 $EndOfTpl$
 $!
+$! Note that the /key qualifier to search, as in:
+$! search README.* "=head"/key=(position=1)/window=0/output=extra.pods
+$! is not supported on VMS V5.5-2, hence not used in extra_pods.com.
+$!
+$ echo4 "Extracting extra_pods.com (without variable substitutions)"
+$ Create Sys$Disk:[-]extra_pods.com
+$ Deck/Dollar="$EOExtra_Pods$"
+$!++ extra_pods.com
+$!   NOTE: This file is extracted as part of the VMS configuration process.
+$!   Any changes made to it directly will be lost.  If you need to make any
+$!   changes, please edit the template in Configure.Com instead.
+$!   Use FORCE if you've just podified a README.* file on VMS.
+$ if f$search("extra.pods") .eqs. "" .or. P1 .eqs. "FORCE" then -
+    search README.* "=head"/window=0/output=extra.pods
+$ open/read/error=extra_close EXTRA extra.pods
+$extra_loop:
+$ read/error=extra_close/END_OF_FILE=extra_close EXTRA file
+$ file_type = f$parse(file,,,"TYPE",) - "."
+$ if file_type .nes. "VMS" .and. file_type .nes. "vms"
+$ then
+$   pod_file = "[.pod]perl''file_type'.pod"
+$   file = file - "''f$parse(file,,,"VERSION",)'"
+$   if p1 .eqs. "CLEAN"
+$   then if f$search(pod_file) .nes. "" then delete/log 'pod_file';*
+$   else
+$     do_copy := false
+$     if f$search(pod_file) .eqs. ""
+$     then do_copy := true
+$     else
+$       file_rdt = f$cvtime(f$file_attributes(file,"RDT"))
+$       pod_file_rdt = f$cvtime(f$file_attributes(pod_file,"RDT"))
+$       if file_rdt .GTS. pod_file_rdt then do_copy := true
+$     endif
+$     if do_copy then copy/log/noconfirm 'file' 'pod_file'
+$   endif
+$ endif
+$ goto extra_loop
+$extra_close:
+$ close EXTRA
+$ if p1 .eqs. "CLEAN" .and. f$search("extra.pods;-1") .nes. "" then -
+    purge/nolog extra.pods
+$!-- extra_pods.com
+$EOExtra_Pods$
 $!
 $!  Warn of dangerous symbols or logical names
 $!
@@ -5602,6 +5927,8 @@ $ 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."
 $!
@@ -5794,8 +6121,8 @@ $ THEN
 $   DEASSIGN SYS$OUTPUT
 $!   DEASSIGN SYS$ERROR
 $ ENDIF
-$ IF F$GETJPI("","FILCNT").NE.vms_filcnt THEN CLOSE CONFIG
-$ IF F$GETJPI("","FILCNT").NE.vms_filcnt 
+$ IF F$GETJPI("","FILCNT").GT.vms_filcnt THEN CLOSE CONFIG
+$ IF F$GETJPI("","FILCNT").GT.vms_filcnt
 $ THEN WRITE SYS$ERROR "%Config-W-VMS, WARNING: There is a file still open"
 $ ENDIF
 $ dflt = F$ENVIRONMENT("DEFAULT")
@@ -5807,6 +6134,5 @@ $   SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) UU.DIR
 $   DELETE/NOLOG/NOCONFIRM UU.DIR;
 $ ENDIF
 $ SET DEFAULT 'vms_default_directory_name' !be kind rewind
-$ STOP
 $ EXIT
 $!: End of Configure