This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Define our own sockaddr_in6 for VC6
[perl5.git] / configure.com
index 547e5d4..59aa4c5 100644 (file)
@@ -44,6 +44,7 @@ $ extra_flags = ""
 $ user_c_flags = ""
 $ use_ieee_math = "y"
 $ be_case_sensitive = "n"
+$ shorten_long_symbols = "y"
 $ unlink_all_versions = "n"
 $ builder = "MMK"
 $ use_vmsdebug_perl = "n"
@@ -61,7 +62,9 @@ $ use_pack_malloc = "N"
 $ use_debugmalloc = "N"
 $ ccflags = ""
 $ static_ext = ""
+$ dynamic_ext = ""
 $ nonxs_ext = ""
+$ nonxs_ext2 = ""
 $ 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]
@@ -368,11 +371,20 @@ $!
 $Shut_up:
 $ IF F$Mode() .eqs. "BATCH"
 $ THEN
-$   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"
+$   x = F$GETQUI("CANCEL_OPERATION")        ! clear the deck
+$   x = "THIS_JOB"
+$   bproc_queue = f$getqui("DISPLAY_QUEUE","QUEUE_NAME","*",x)
+$   bproc_entry = f$getqui("DISPLAY_JOB","ENTRY_NUMBER",,x)
+$   bproc_name = f$getqui("DISPLAY_JOB","JOB_NAME",,x)
+$   bproc_log_spec = f$getqui("DISPLAY_JOB","LOG_SPECIFICATION",,x)
+$   STDOUT = F$PARSE(bproc_name, bproc_log_spec, ".LOG")
+$   WRITE SYS$OUTPUT "Writing output of entry ''bproc_entry' in queue ''bproc_queue' to a new version of: "
 $   WRITE SYS$OUTPUT STDOUT
+$   DELETE_/SYMBOL x
+$   DELETE_/SYMBOL bproc_queue
+$   DELETE_/SYMBOL bproc_entry
+$   DELETE_/SYMBOL bproc_name
+$   DELETE_/SYMBOL bproc_log_spec
 $ ELSE
 $   STDOUT = F$TRNLNM("SYS$OUTPUT")
 $ ENDIF
@@ -468,6 +480,11 @@ $     IF ( F$SEARCH("UU.DIR").EQS."" )
 $     THEN
 $       CREATE/DIRECTORY [.UU]
 $     ELSE
+$       IF ( F$SEARCH("[.UU.CXX_REPOSITORY]*.*").NES."" )
+$       THEN
+$         DELETE/NOLOG/NOCONFIRM [.UU.CXX_REPOSITORY]*.*;*
+$         SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) [.UU]CXX_REPOSITORY.DIR
+$       ENDIF
 $       IF ( F$SEARCH("[.UU]*.*").NES."" ) THEN DELETE/NOLOG/NOCONFIRM [.UU]*.*;*
 $     ENDIF
 $!: Configure runs within the UU subdirectory
@@ -553,6 +570,13 @@ $         basename = -
 $         found = F$SEARCH(dirname + basename)
 $         file_2_find = file_2_find + "," + basename
 $       ENDIF
+$       tildeloc = f$locate("~",basename)
+$       IF (found .EQS. "" .AND. tildeloc .LT. f$length(basename))
+$       THEN
+$         basename[tildeloc,1] := "_"
+$         found = F$SEARCH(dirname + basename)
+$         file_2_find = file_2_find + "," + basename
+$       ENDIF
 $       IF (found .EQS. "")
 $       THEN
 $         WRITE MISSING file_2_find
@@ -905,7 +929,7 @@ $   config_symbols1 ="|installprivlib|installscript|installsitearch|installsitel
 $   config_symbols2 ="|prefix|privlib|privlibexp|scriptdir|sitearch|sitearchexp|sitebin|sitelib|sitelib_stem|sitelibexp|try_cxx|use64bitall|use64bitint|"
 $   config_symbols3 ="|usecasesensitive|usedefaulttypes|usedevel|useieee|useithreads|uselongdouble|usemultiplicity|usemymalloc|usedebugging_perl|"
 $   config_symbols4 ="|useperlio|usesecurelog|usethreads|usevmsdebug|usefaststdio|usemallocwrap|unlink_all_versions|uselargefiles|usesitecustomize|"
-$   config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthread"
+$   config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthreads|useshortenedsymbols"
 $!  
 $   open/read CONFIG 'config_sh'
 $   rd_conf_loop:
@@ -942,7 +966,7 @@ $   delete/symbol val
 $   delete/symbol dsym
 $   if f$type(usedebugging_perl) .nes. ""
 $   then
-$       useperldebug = usedebugging_perl
+$       DEBUGGING = usedebugging_perl
 $       delete/symbol usedebugging_perl
 $   endif
 $!
@@ -1401,9 +1425,10 @@ $   SET NOON
 $   OPEN/READ PATCH [-].patch
 $   READ PATCH line
 $   CLOSE PATCH
-$   tmp = F$EDIT(line,"COLLAPSE")
+$   tmp = F$EDIT(line,"TRIM,COMPRESS")
+$   IF F$ELEMENT(3, " ", tmp) .NES. "" THEN tmp = F$ELEMENT(3, " ", tmp)
 $   SET ON
-$   IF tmp .GT. perl_patchlevel then perl_patchlevel = tmp
+$   IF tmp .NES. "" THEN perl_patchlevel = tmp
 $ ENDIF
 $!
 $ version_patchlevel_string = "version ''patchlevel' subversion ''subversion'"
@@ -2294,10 +2319,10 @@ $ echo "enables the -D switch, at the cost of some performance.  It"
 $ echo "was mandatory on perl 5.005 and before on VMS, but is now"
 $ echo "optional.  If you do not generally use it you should probably"
 $ echo "leave this off and gain a bit of extra speed."
-$ bool_dflt = "y"
-$ if f$type(useperldebug) .nes. "" 
+$ bool_dflt = "n"
+$ if f$type(DEBUGGING) .nes. "" 
 $ then
-$   if f$extract(0,1,f$edit(useperldebug,"collapse,upcase")).eqs."N"  .or. useperldebug .eqs. "undef" then bool_dflt="n"
+$   if f$extract(0,1,f$edit(DEBUGGING,"collapse,upcase")).eqs."Y"  .or. DEBUGGING .eqs. "define" then bool_dflt="y"
 $ endif
 $ rp = "Build a DEBUGGING version of Perl? [''bool_dflt'] "
 $ GOSUB myread
@@ -2509,8 +2534,6 @@ $   ENDIF
 $ ENDIF
 $ IF F$TYPE(usethreadupcalls) .EQS. "" THEN usethreadupcalls = "undef"
 $ IF F$TYPE(usekernelthreads) .EQS. "" THEN usekernelthreads = "undef"
-$ IF archname .NES. "VMS_VAX"
-$ THEN
 $! Case sensitive?
 $   echo ""
 $   echo "By default, perl (and pretty much everything else on VMS) uses"
@@ -2532,6 +2555,22 @@ $   endif
 $   rp = "Build with case-sensitive symbols? [''bool_dflt'] "
 $   GOSUB myread
 $   be_case_sensitive = ans
+$!
+$! Shortened symbols?
+$   echo ""
+$   echo "The VMS linker does not handle symbol names longer than 31 characters,"
+$   echo "but the compiler can shorten long symbols if requested."
+$   bool_dflt = shorten_long_symbols
+$   if f$type(useshortenedsymbols) .nes. ""
+$   then
+$       if useshortenedsymbols .or. useshortenedsymbols .eqs. "define" then bool_dflt = "y"
+$       if f$extract(0,1,f$edit(useshortenedsymbols,"collapse,upcase")) .eqs. "N" .or. useshortenedsymbols .eqs. "undef"  then bool_dflt = "n"
+$   endif
+$   rp = "Build with long symbols shortened? [''bool_dflt'] "
+$   GOSUB myread
+$   shorten_long_symbols = ans
+$ IF archname .NES. "VMS_VAX"
+$ THEN
 $! IEEE math?
 $   echo ""
 $   echo "Perl normally uses IEEE format (T_FLOAT) floating point numbers on"
@@ -2552,13 +2591,14 @@ $   rp = "Use IEEE math? [''bool_dflt'] "
 $   GOSUB myread
 $   use_ieee_math = ans
 $ ELSE
-$   be_case_sensitive = "n"
 $   use_ieee_math = "n"
 $ ENDIF
 $ useieee = "undef"
 $ usecasesensitive = "undef"
+$ useshortenedsymbols = "undef"
 $ if (use_ieee_math) then useieee = "define"
 $ if (be_case_sensitive) then usecasesensitive = "define"
+$ if (shorten_long_symbols) then useshortenedsymbols = "define"
 $! Unlink all versions?
 $ echo ""
 $ echo "By default, Perl's unlink() provides VMS-like behavior and only"
@@ -2709,25 +2749,102 @@ $ 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
+       F$EXTRACT(0,5,line) .NES. "dist/".AND. -
+       F$EXTRACT(0,5,line) .NES. "cpan/" 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 F$EXTRACT(0,4,line) .EQS. "ext/"
+$   THEN
+$     xxx = F$ELEMENT(1,"/",line)
+$     IF F$SEARCH("[-.ext]''xxx'.DIR;1") .EQS. "" THEN GOTO ext_loop
+$   ENDIF
+$   IF F$EXTRACT(0,5,line) .EQS. "dist/"
+$   THEN
+$     xxx = F$ELEMENT(1,"/",line)
+$     IF F$SEARCH("[-.dist]''xxx'.DIR;1") .EQS. "" THEN GOTO ext_loop
+$   ENDIF
+$   IF F$EXTRACT(0,5,line) .EQS. "cpan/"
+$   THEN
+$     xxx = F$ELEMENT(1,"/",line)
+$     IF F$SEARCH("[-.cpan]''xxx'.DIR;1") .EQS. "" THEN GOTO ext_loop
+$   ENDIF
 $   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,7,xxx) .EQS. "Encode/" THEN goto ext_loop  ! sub extension - omit
-$   IF xxx .EQS. "B/C" 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'"
+$!
+$! (extspec = xxx) =~ tr!-!/!
+$ extspec = ""
+$ idx = 0
+$ extension_dir_name = xxx
+$ replace_dash_with_slash:
+$   before = F$ELEMENT(idx, "-", xxx)
+$   IF before .EQS. "-" THEN goto end_replace_dash_with_slash
+$   IF extspec .NES. "" 
+$   THEN
+$      extspec = extspec + "/"
+$   ENDIF
+$   extspec = extspec + before
+$   idx = idx + 1
+$   goto replace_dash_with_slash
+$
+$ end_replace_dash_with_slash:
+$   
+$ xxx = known_extensions
+$ gosub may_already_have_extension
+$ IF $STATUS .EQ. 1
+$ THEN
+$     xxx = nonxs_ext
+$     gosub may_already_have_extension
+$ ENDIF
+$ IF $STATUS .EQ. 1
+$ THEN
+$     xxx = nonxs_ext2
+$     gosub may_already_have_extension
+$ ENDIF
+$ IF $STATUS .NE. 1 THEN goto ext_loop
+$ goto found_new_extension
+$!
+$ may_already_have_extension:
+$   idx = F$LOCATE(extspec, xxx)
+$   extlen = F$LENGTH(xxx) 
+$   IF idx .EQ. extlen THEN return 1   ! didn't find it
+$!  But "Flirble" may just be part of "Acme-Flirble".  This is not
+$!  bullet-proof because we may only be looking at one chunk of the
+$!  existing extension list.
+$   IF idx .GT. 0 .AND. F$EXTRACT(idx - 1, 1, xxx) .NES. " "
+$   THEN
+$      xxx = F$EXTRACT(idx + F$LENGTH(extspec) + 1, extlen, xxx)
+$      GOTO may_already_have_extension
+$   ENDIF
+$!  But "Foo" may just be part of "Foo-Bar" so check for equality.
+$   xxx = F$EXTRACT(idx, extlen - idx, xxx)
+$   IF F$ELEMENT(0, " ", xxx) .EQS. extspec
+$   THEN 
+$      RETURN 3
+$   ELSE 
+$      xxx = F$EXTRACT(F$LENGTH(extspec) + 1, extlen, xxx)
+       GOTO may_already_have_extension
+$   ENDIF
+$!
+$ found_new_extension:
+$   IF F$SEARCH("[-.ext.''extension_dir_name']*.xs") .EQS. "" .AND. F$SEARCH("[-.dist.''extension_dir_name']*.xs") .EQS. "" .AND. F$SEARCH("[-.cpan.''extension_dir_name']*.xs") .EQS. ""
+$   THEN
+$!  Bit if a hack to get around the 1K buffer on older systems.
+$       IF F$LENGTH(nonxs_ext) .GT. 950
+$       THEN
+$           nonxs_ext2 = nonxs_ext2 + " ''extspec'"
+$       ELSE
+$           nonxs_ext = nonxs_ext + " ''extspec'"
+$       ENDIF
+$   ELSE
+$       known_extensions = known_extensions + " ''extspec'"
+$   ENDIF
 $   goto ext_loop
 $end_ext:
 $ close CONFIG
 $ DELETE/SYMBOL xxx
+$ DELETE/SYMBOL idx
+$ DELETE/SYMBOL extspec
+$ DELETE/SYMBOL extlen
+$ DELETE/SYMBOL extension_dir_name
 $ known_extensions = F$EDIT(known_extensions,"TRIM,COMPRESS")
 $ dflt = known_extensions
 $ IF ccname .NES. "DEC" .AND. ccname .NES. "CXX"
@@ -2745,15 +2862,12 @@ $ IF .NOT. Has_socketshr .AND. .NOT. Has_Dec_C_Sockets
 $ THEN
 $   dflt = dflt - "Socket"            ! optional on VMS
 $ ENDIF
-$ ! Build this one only for threads without ithreads
-$ IF F$TYPE(useithreads) .EQS. "" .OR. .NOT. use_threads
-$ THEN
-$   dflt = dflt - "Thread"
-$ ELSE
-$   IF useithreads .OR. useithreads .EQS. "define" THEN dflt = dflt - "Thread"
-$ ENDIF
-$ dflt = dflt - "Win32API/File" - "Win32CORE" - "Win32"  ! need Dave Cutler's other project
+$ dflt = dflt - "Win32API/File" - "Win32"  ! need Dave Cutler's other project
+$ nonxs_ext = nonxs_ext - "Win32CORE"
+$ nonxs_ext2 = nonxs_ext2 - "Win32CORE"
 $ dflt = F$EDIT(dflt,"TRIM,COMPRESS")
+$ nonxs_ext = F$EDIT(nonxs_ext,"TRIM,COMPRESS")
+$ nonxs_ext2 = F$EDIT(nonxs_ext2,"TRIM,COMPRESS")
 $!
 $! Ask for their default list of extensions to build
 $ echo ""
@@ -2765,7 +2879,7 @@ $ echo ""
 $ echo "Which modules do you want to build into perl?"
 $ rp = "[''dflt'] "
 $ GOSUB myread
-$ extensions = F$EDIT(ans,"TRIM,COMPRESS")
+$ dynamic_ext = F$EDIT(ans,"TRIM,COMPRESS")
 $!
 $! %Config-I-VMS, determine build/make utility here (make gmake mmk mms)
 $ echo ""
@@ -2934,10 +3048,25 @@ $   THEN
 $     extra_flags = "''extra_flags'" + "/float=g_float"
 $   ENDIF
 $ ENDIF
+$ names_flags = ""
 $ IF be_case_sensitive
 $ THEN
-$   extra_flags = "''extra_flags'" + "/Names=As_Is"
+$   names_flags = "AS_IS"
 $ ENDIF
+$ IF shorten_long_symbols
+$ THEN
+$   IF be_case_sensitive
+$   THEN
+$     names_flags = "''names_flags',SHORTENED"
+$   ELSE
+$     names_flags = "SHORTENED"
+$   ENDIF
+$ ENDIF
+$ IF F$LENGTH(names_flags) .ne. 0
+$ THEN
+$   extra_flags = "''extra_flags'" + "/NAMES=(''names_flags')"
+$ ENDIF
+$ DELETE/SYMBOLS names_flags
 $ extra_flags = "''extra_flags'" + "''user_c_flags'"
 $!
 $ min_pgflquota = "100000"
@@ -2960,7 +3089,7 @@ $!
 $ bool_dflt = "y"
 $ IF F$TYPE(useperlio) .NES. ""
 $ then
-$   if f$extract(0,1,f$edit(useperlio,"collapse,upcase")) .eqs. "N" .or. useperlio .eqs. "undef" then bool_dflt = "n"
+$   if .not. useperlio .or. useperlio .eqs. "undef" then bool_dflt = "n"
 $ endif
 $ IF .NOT. silent
 $ THEN
@@ -3062,6 +3191,12 @@ $   d_vms_be_case_sensitive = "define"
 $ ELSE
 $   d_vms_be_case_sensitive = "undef"
 $ ENDIF
+$ IF shorten_long_symbols
+$ THEN
+$   d_vms_shorten_long_symbols = "define"
+$ ELSE
+$   d_vms_shorten_long_symbols = "undef"
+$ ENDIF
 $! Some constant defaults.
 $ hwname = f$getsyi("HW_NAME")
 $ myname = myhostname
@@ -3162,6 +3297,7 @@ $ THEN d_mymalloc="define"
 $ ELSE d_mymalloc="undef"
 $ ENDIF
 $!
+$ usedevel="undef"
 $ usedl="define"
 $ startperl="""$ perl 'f$env(\""procedure\"")' \""'"+"'p1'\"" \""'"+"'p2'\"" \""'"+"'p3'\"" \""'"+"'p4'\"" \""'"+"'p5'\"" \""'"+"'p6'\"" \""'"+"'p7'\"" \""'"+"'p8'\""!\n"
 $ startperl=startperl + "$ exit++ + ++$status!=0 and $exit=$status=undef; while($#ARGV != -1 and $ARGV[$#ARGV] eq '"+"'){pop @ARGV;}"""
@@ -4736,6 +4872,43 @@ $ ELSE
 $   d_getsent="undef"
 $ ENDIF
 $!
+$!
+$! Check for sa_len
+$!
+$ echo4 "Checking the availability of sa_len in the sockaddr struct ..."
+$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
+$ THEN
+$   OS
+$   WS "#if defined(__DECC) || defined(__DECCXX)"
+$   WS "#include <stdlib.h>"
+$   WS "#endif"
+$   WS "#define _SOCKADDR_LEN"
+$   WS "#include <types.h>"
+$   IF Has_Socketshr
+$   THEN
+$     WS "#include <socketshr.h>"
+$   ELSE
+$     WS "#include <socket.h>"
+$   ENDIF
+$   WS "int main() {"
+$   WS "struct sockaddr sa;"
+$   WS "return (sa.sa_len);"
+$   WS "}"
+$   CS
+$   GOSUB compile_ok
+$   IF compile_status .EQ. good_compile
+$   THEN
+$     d_sockaddr_sa_len="define"
+$     echo "You have sa_len in the sockaddr struct."
+$   ELSE
+$     d_sockaddr_sa_len="undef"
+$     echo "You do not have sa_len in the sockaddr struct."
+$   ENDIF
+$ ELSE
+$   d_sockaddr_sa_len="undef"
+$   echo "You do not have sa_len in the sockaddr struct."
+$ ENDIF
+$!
 $! Check for nanosleep
 $!
 $ OS
@@ -5776,6 +5949,7 @@ $ WC "ccversion='" + ccversion + "'"
 $ WC "cf_by='" + cf_by + "'"
 $ WC "cf_email='" + cf_email + "'"
 $ WC "cf_time='" + cf_time + "'"
+$ WC "charbits='8'"
 $ WC "config_args='" + config_args + "'"
 $ WC "config_sh='" + config_sh + "'"
 $ WC "cpp_stuff='" + cpp_stuff + "'"
@@ -5808,15 +5982,19 @@ $ WC "d_accessx='undef'"
 $ WC "d_aintl='undef'"
 $ WC "d_alarm='define'"
 $ WC "d_archlib='define'"
+$ WC "d_asctime64='undef'"
 $ WC "d_atolf='" + d_atolf + "'"
 $ WC "d_atoll='" + d_atoll + "'"
 $ WC "d_attribute_format='" + d_attribut + "'"
+$ WC "d_attribute_deprecated='undef'"
 $ WC "d_attribute_malloc='undef'"
 $ WC "d_attribute_nonnull='undef'"
 $ WC "d_attribute_noreturn='undef'"
 $ WC "d_attribute_pure='undef'"
 $ WC "d_attribute_unused='undef'"
 $ WC "d_attribute_warn_unused_result='undef'"
+$ WC "d_prctl='undef'"
+$ WC "d_prctl_set_name='undef'"
 $ WC "d_printf_format_null='undef'"
 $ WC "d_bcmp='" + d_bcmp + "'"
 $ WC "d_bcopy='" + d_bcopy + "'"
@@ -5841,11 +6019,13 @@ $ WC "d_cplusplus='" + d_cplusplus + "'"
 $ WC "d_crypt='define'"
 $ WC "d_csh='undef'"
 $ WC "d_ctermid='define'"
+$ WC "d_ctime64='undef'"
 $ WC "d_cuserid='define'"
 $ WC "d_c99_variadic_macros='undef'"
 $ WC "d_dbl_dig='define'"
 $ WC "d_dbminitproto='undef'"
 $ WC "d_difftime='define'"
+$ WC "d_difftime64='undef'"
 $ WC "d_dir_dd_fd='undef'"
 $ WC "d_dirfd='undef'"
 $ WC "d_dirnamlen='define'"
@@ -5891,6 +6071,9 @@ $ WC "d_fstatvfs='" + d_fstatvfs + "'"
 $ WC "d_fsync='undef'"
 $ WC "d_ftello='" + d_ftello + "'"
 $ WC "d_futimes='undef'"
+$ WC "d_gdbmndbm_h_uses_prototypes='undef'"
+$ WC "d_gdbm_ndbm_h_uses_prototypes='undef'"
+$ WC "d_getaddrinfo='undef'"
 $ WC "d_getcwd='define'"
 $ WC "d_getespwnam='undef'"
 $ WC "d_getfsstat='undef'"
@@ -5905,6 +6088,7 @@ $ WC "d_getitimer='" + d_getitimer + "'"
 $ WC "d_getlogin='define'"
 $ WC "d_getmnt='undef'"
 $ WC "d_getmntent='undef'"
+$ WC "d_getnameinfo='undef'"
 $ WC "d_getnbyaddr='" + d_getnbyaddr + "'"
 $ WC "d_getnbyname='" + d_getnbyname + "'"
 $ WC "d_getnent='" + d_getnent + "'"
@@ -5927,6 +6111,7 @@ $ WC "d_getsent='" + d_getsent + "'"
 $ WC "d_getservprotos='" + d_getservprotos + "'"
 $ WC "d_getspnam='undef'"
 $ WC "d_gettimeod='" + d_gettimeod + "'"
+$ WC "d_gmtime64='undef'"
 $ WC "d_gnulibc='undef'"
 $ WC "d_grpasswd='undef'"
 $ WC "d_hasmntopt='undef'"
@@ -5935,6 +6120,8 @@ $ WC "d_ilogbl='undef'"
 $ WC "d_inc_version_list='undef'"
 $ WC "d_index='" + d_index + "'"
 $ WC "d_inetaton='undef'"
+$ WC "d_inetntop='undef'"
+$ WC "d_inetpton='undef'"
 $ WC "d_int64_t='" + d_int64_t + "'"
 $ WC "d_isascii='define'"
 $ WC "d_isfinite='undef'"
@@ -5947,6 +6134,7 @@ $ WC "d_ldbl_dig='define'"
 $ WC "d_libm_lib_version='undef'"
 $ WC "d_link='" + d_link + "'"
 $ WC "d_llseek='undef'"
+$ WC "d_localtime64='undef'"
 $ WC "d_locconv='" + d_locconv + "'"
 $ WC "d_lockf='undef'"
 $ WC "d_longdbl='" + d_longdbl + "'"
@@ -5971,6 +6159,7 @@ $ WC "d_mknod='undef'"
 $ WC "d_mkstemp='" + d_mkstemp + "'"
 $ WC "d_mkstemps='" + d_mkstemps + "'"
 $ WC "d_mktime='" + d_mktime + "'"
+$ WC "d_mktime64='undef'"
 $ WC "d_mmap='" + d_mmap + "'"
 $ WC "d_modfl='" + d_modfl + "'"
 $ WC "d_modflproto='" + d_modflproto + "'"
@@ -5987,6 +6176,7 @@ $ WC "d_msync='" + d_msync + "'"
 $ WC "d_munmap='" + d_munmap + "'"
 $ WC "d_mymalloc='" + d_mymalloc + "'"
 $ WC "d_nanosleep='" + d_nanosleep + "'"
+$ WC "d_ndbm_h_uses_prototypes='undef'"
 $ WC "d_nice='define'"
 $ WC "d_nl_langinfo='" + d_nl_langinfo + "'"
 $ WC "d_nv_preserves_uv='" + d_nv_preserves_uv + "'"
@@ -6075,6 +6265,7 @@ $ WC "d_signbit='" + d_signbit + "'"
 $ WC "d_sigprocmask='" + d_sigprocmask + "'"
 $ WC "d_sigsetjmp='" + d_sigsetjmp + "'"
 $ WC "d_sitearch='define'"
+$ WC "d_sockaddr_sa_len='" + d_sockaddr_sa_len + "'"
 $ WC "d_sockatmark='undef'"
 $ WC "d_sockatmarkproto='undef'"
 $ WC "d_socket='" + d_socket + "'"
@@ -6091,6 +6282,7 @@ $ WC "d_statblks='undef'"
 $ WC "d_statfs_f_flags='undef'"
 $ WC "d_statfs_s='undef'"
 $ WC "d_statfsflags='undef'"
+$ WC "d_static_inline='define'"
 $ WC "d_stdio_cnt_lval='" + d_stdio_cnt_lval + "'"
 $ WC "d_stdio_ptr_lval='" + d_stdio_ptr_lval + "'"
 $ WC "d_stdio_ptr_lval_nochange_cnt='" + d_stdio_ptr_lval_nochange_cnt + "'"
@@ -6157,6 +6349,7 @@ $ WC "d_vendorlib='undef'"
 $ WC "d_vfork='define'"
 $ WC "d_vms_case_sensitive_symbols='" + d_vms_be_case_sensitive + "'" ! VMS
 $ WC "d_vms_do_sockets='" + d_vms_do_sockets + "'" ! VMS
+$ WC "d_vms_shorten_long_symbols='" + d_vms_shorten_long_symbols + "'" ! VMS
 $ WC "d_void_closedir='define'"
 $ WC "d_volatile='define'"
 $ WC "d_vprintf='define'"
@@ -6182,9 +6375,9 @@ $ WC "doublesize='" + doublesize + "'"
 $ WC "drand01='" + drand01 + "'"
 $ WC "dtrace='" + "'"
 $!
-$! The extensions symbol may be quite long
+$! The dynamic_ext symbol may be quite long
 $!
-$ tmp = "dynamic_ext='" + extensions + "'"
+$ tmp = "dynamic_ext='" + dynamic_ext + "'"
 $ WC/symbol tmp
 $ DELETE/SYMBOL tmp
 $ WC "eagain=' '"
@@ -6193,11 +6386,9 @@ $ WC "embedmymalloc='" + usemymalloc + "'"
 $ WC "eunicefix=':'"
 $ WC "exe_ext='" + exe_ext + "'"
 $!
-$! The extensions symbol may be quite long
+$! The extensions symbols may be quite long
 $!
-$ tmp = "extensions='" + extensions + "'"
-$ WC/symbol tmp
-$ DELETE/SYMBOL tmp
+$ WC/symbol "extensions='", nonxs_ext, " ", nonxs_ext2, " ", dynamic_ext, "'"
 $ WC "fflushNULL='define'"
 $ WC "fflushall='undef'"
 $ WC "fpostype='fpos_t'"
@@ -6366,7 +6557,7 @@ $ WC "netdb_hlen_type='" + netdb_hlen_type + "'"
 $ WC "netdb_host_type='" + netdb_host_type + "'"
 $ WC "netdb_name_type='" + netdb_name_type + "'"
 $ WC "netdb_net_type='" + netdb_net_type + "'"
-$ WC "nonxs_ext='" + nonxs_ext + "'"
+$ WC/symbol "nonxs_ext='", nonxs_ext, " ", nonxs_ext2, "'"
 $ WC "nveformat='" + nveformat + "'"
 $ WC "nvfformat='" + nvfformat + "'"
 $ WC "nvgformat='" + nvgformat + "'"
@@ -6389,6 +6580,7 @@ $ WC "perl_root='" + perl_root + "'" ! VMS specific $trnlnm()
 $ WC "perladmin='" + perladmin + "'"
 $ WC "perllibs='" + perllibs + "'"
 $ WC "perlpath='" + "''vms_prefix':[000000]Perl''exe_ext'" + "'"
+$ WC "perl_static_inline='static inline'"
 $ WC "perl_symbol='" + perl_symbol + "'"  ! VMS specific
 $ WC "perl_verb='" + perl_verb + "'"      ! VMS specific
 $ WC "pgflquota='" + pgflquota + "'"
@@ -6408,6 +6600,10 @@ $ WC "randseedtype='" + randseedtype + "'"
 $ WC "ranlib='" + "'"
 $ WC "rd_nodata=' '"
 $ WC "revision='" + revision + "'"
+$ WC "sGMTIME_max='4294967295'"
+$ WC "sGMTIME_min='0'"
+$ WC "sLOCALTIME_max='4294967295'"
+$ WC "sLOCALTIME_min='0'"
 $ WC "sPRId64='" + sPRId64 + "'"
 $ WC "sPRIEldbl='" + sPRIEUldbl + "'"
 $ WC "sPRIFldbl='" + sPRIFUldbl + "'"
@@ -6499,6 +6695,7 @@ $ WC "usecasesensitive='" + be_case_sensitive + "'"    ! VMS-specific
 $ WC "usedebugging_perl='"+use_debugging_perl+"'"
 $ WC "usedefaulttypes='" + usedefaulttypes + "'"    ! VMS-specific
 $ WC "usecrosscompile='undef'"
+$ WC "usedevel='" + usedevel + "'"
 $ WC "usedl='" + usedl + "'"
 $ WC "usedtrace='undef'"
 $ WC "usefaststdio='" + usefaststdio + "'"
@@ -6515,6 +6712,7 @@ $ WC "useposix='false'"
 $ WC "usereentrant='undef'"
 $ WC "userelocatableinc='undef'"
 $ WC "usesecurelog='" + usesecurelog + "'"  ! VMS-specific
+$ WC "useshortenedsymbols='" + useshortenedsymbols + "'"    ! VMS-specific
 $ WC "useshrplib='true'"
 $ WC "usesitecustomize='" + usesitecustomize + "'"
 $ WC "usesocks='undef'"
@@ -6530,6 +6728,7 @@ $ WC "uvuformat='" + uvuformat + "'"
 $ WC "uvxformat='" + uvxformat + "'"
 $ WC "uvXUformat='" + uvXUformat + "'"
 $ WC "vendorarch='" + "'"
+$ WC "vaproto='define'"
 $ WC "vendorarchexp='" + "'"
 $ WC "vendorbin='" + "'"
 $ WC "vendorbinexp='" + "'"
@@ -6749,6 +6948,7 @@ $ ENDIF
 $ IF use64bitall .OR. use64bitall .EQS. "define" THEN -
     WC "#define USE_64_BIT_ALL"
 $ IF be_case_sensitive THEN WC "#define VMS_WE_ARE_CASE_SENSITIVE"
+$ IF shorten_long_symbols THEN WC "#define VMS_SHORTEN_LONG_SYMBOLS"
 $ IF use_ieee_math THEN WC "#define USE_IEEE"
 $ IF d_herrno .EQS. "undef" THEN WC "#define NEED_AN_H_ERRNO"
 $ WC "#define HAS_ENVGETENV"
@@ -6763,6 +6963,7 @@ $ ENDIF
 $ IF kill_by_sigprc .EQS. "define" then WC "#define KILL_BY_SIGPRC"
 $ IF unlink_all_versions .OR. unlink_all_versions .EQS. "define" THEN -
     WC "#define UNLINK_ALL_VERSIONS"
+$ IF d_sockaddr_sa_len .EQS. "define" then WC "#define _SOCKADDR_LEN 1"
 $ CLOSE CONFIG
 $!
 $ echo4 "Doing variable substitutions on .SH files..."
@@ -6864,80 +7065,6 @@ $! Clean up after ourselves
 $ DELETE/NOLOG/NOCONFIRM []munchconfig.exe;
 $ DELETE/NOLOG/NOCONFIRM []extra_subs.txt;
 $!
-$ echo4 "Extracting make_ext.com (without variable substitutions)"
-$ Create Sys$Disk:[-]make_ext.com
-$ Deck/Dollar="$EndOfTpl$"
-$!++ make_ext.com
-$!   NOTE: This file is extracted as part of the VMS configuration process.
-$!   Any changes made to it directly will be lost.  If you need to make any
-$!   changes, please edit the template in Configure.Com instead.
-$    mydefault = F$Environment("Default")
-$!   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," ",extensions)
-$    If ext .eqs. " " .or. ext .eqs. "" Then Goto done
-$    Define/User_mode Perl_Env_Tables CLISYM_LOCAL
-$    miniperl
-$    deck
-     ($extdir = $ENV{'ext'}) =~ s/::/./g;
-     $extdir =~ s#/#.#g;
-     if ($extdir =~ /^vms/i) { $extdir =~ s/vms/.vms.ext/i; }
-     else                    { $extdir = ".ext.$extdir";   }
-     ($ENV{'extdir'} = "[$extdir]");
-     ($ENV{'up'} = ('-') x ($extdir =~ tr/././));
-$    eod
-$    Set Default &extdir
-$    redesc = 0
-$    If F$Locate("clean",targ) .eqs. F$Length(targ)
-$    Then
-$      Write Sys$Output ""
-$      Write Sys$Output "      Making ''ext' (dynamic)"
-$      On Error Then Goto done
-$      If F$Search("Descrip.MMS") .eqs. ""
-$      Then
-$        redesc = 1
-$      Else
-$        If F$CvTime(F$File("Descrip.MMS","rdt")) .lts. -
-            F$CvTime(F$File("Makefile.PL","rdt")) Then redesc = 1
-$      EndIf
-$    Else
-$      Write Sys$Output "''targ'ing ''ext' . . ."
-$      On Error Then Continue
-$    EndIf
-$    If redesc Then -
-       miniperl "-I[''up'.lib]" Makefile.PL "INST_LIB=[''up'.lib]" "INST_ARCHLIB=[''up'.lib]"  "PERL_CORE=1"
-$    makeutil 'targ'
-$    i = i + 1
-$    Set Def &mydefault
-$    Goto next_ext
-$ done:
-$    sts = $Status
-$    Set Def &mydefault
-$    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.
@@ -7164,7 +7291,7 @@ $ WRITE CONFIG "$ cpan2dist  == """ + perl_setup_perl + " ''vms_prefix':[utils]c
 $! FIXME: "-" is an operator and illegal in a symbol name -- cpanp-run-perl can't work
 $!$ WRITE CONFIG "$ cpanp-run-perl == """ + perl_setup_perl + " ''vms_prefix':[utils]cpanp-run-perl.com"""
 $ WRITE CONFIG "$ cpanp      == """ + perl_setup_perl + " ''vms_prefix':[utils]cpanp.com"""
-$ IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions)
+$ IF F$LOCATE("Devel::DProf",dynamic_ext) .LT. F$LENGTH(dynamic_ext)
 $ THEN
 $ WRITE CONFIG "$ dprofpp    == """ + perl_setup_perl + " ''vms_prefix':[utils]dprofpp.com"""
 $ ENDIF 
@@ -7192,6 +7319,7 @@ $ WRITE CONFIG "$ pstruct    == """ + perl_setup_perl + " ''vms_prefix':[utils]p
 $ WRITE CONFIG "$ s2p        == """ + perl_setup_perl + " ''vms_prefix':[utils]s2p.com"""
 $ WRITE CONFIG "$ ptar       == """ + perl_setup_perl + " ''vms_prefix':[utils]ptar.com"""
 $ WRITE CONFIG "$ ptardiff   == """ + perl_setup_perl + " ''vms_prefix':[utils]ptardiff.com"""
+$ WRITE CONFIG "$ ptargrep   == """ + perl_setup_perl + " ''vms_prefix':[utils]ptargrep.com"""
 $ WRITE CONFIG "$ shasum     == """ + perl_setup_perl + " ''vms_prefix':[utils]shasum.com"""
 $ WRITE CONFIG "$ splain     == """ + perl_setup_perl + " ''vms_prefix':[utils]splain.com"""
 $ WRITE CONFIG "$ xsubpp     == """ + perl_setup_perl + " ''vms_prefix':[utils]xsubpp.com"""
@@ -7274,6 +7402,11 @@ $ ENDIF
 $ dflt = F$ENVIRONMENT("DEFAULT")
 $ IF F$LOCATE("UU]",dflt).EQS.(F$LENGTH(dflt)-3)
 $ THEN
+$   IF ( F$SEARCH("[.CXX_REPOSITORY]*.*").NES."" ) 
+$   THEN 
+$     DELETE/NOLOG/NOCONFIRM [.CXX_REPOSITORY]*.*;*
+$     SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) CXX_REPOSITORY.DIR
+$   ENDIF
 $   IF ( F$SEARCH("[]*.*").NES."" ) THEN DELETE/NOLOG/NOCONFIRM []*.*;*
 $   SET DEFAULT [-]
 $   SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) UU.DIR