$ 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]
$ delete/symbol dsym
$ if f$type(usedebugging_perl) .nes. ""
$ then
-$ useperldebug = usedebugging_perl
+$ DEBUGGING = usedebugging_perl
$ delete/symbol usedebugging_perl
$ endif
$!
$ 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
$ 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/" THEN goto ext_loop
+$ IF F$EXTRACT(0,4,line) .NES. "ext/" .AND. -
+ 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)
$ IF F$EXTRACT(0,4,line) .EQS. "ext/"
$ 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
$!
$! (extspec = xxx) =~ tr!-!/!
$ 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
-$! But "Flirble" may just be part of "Acme-Flirble"
+$ 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)
$ ENDIF
$!
$ found_new_extension:
-$ IF F$SEARCH("[-.ext.''extension_dir_name']*.xs") .NES. ""
+$ 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
-$ known_extensions = known_extensions + " ''extspec'"
+$! 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
-$ nonxs_ext = nonxs_ext + " ''extspec'"
+$ known_extensions = known_extensions + " ''extspec'"
$ ENDIF
$ goto ext_loop
$end_ext:
$ ENDIF
$ 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 ""
$ 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 + "'"
$ 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 + "'"
$!
$! The extensions symbols may be quite long
$!
-$ tmp = "extensions='" + nonxs_ext + " " + dynamic_ext + "'"
-$ 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'"
$ WC "netdb_host_type='" + netdb_host_type + "'"
$ WC "netdb_name_type='" + netdb_name_type + "'"
$ WC "netdb_net_type='" + netdb_net_type + "'"
-$ tmp = "nonxs_ext='" + nonxs_ext + "'"
-$ WC/symbol tmp
-$ DELETE/SYMBOL tmp
+$ WC/symbol "nonxs_ext='", nonxs_ext, " ", nonxs_ext2, "'"
$ WC "nveformat='" + nveformat + "'"
$ WC "nvfformat='" + nvfformat + "'"
$ WC "nvgformat='" + nvgformat + "'"
$ WC "uvxformat='" + uvxformat + "'"
$ WC "uvXUformat='" + uvXUformat + "'"
$ WC "vendorarch='" + "'"
+$ WC "vaproto='define'"
$ WC "vendorarchexp='" + "'"
$ WC "vendorbin='" + "'"
$ WC "vendorbinexp='" + "'"