$ THEN
$ CREATE/DIRECTORY [.UU]
$ ELSE
-$ IF ( F$SEARCH("[.UU]*.*").NES."" ) THEN DELETE/NOLOG [.UU]*.*;*
+$ IF ( F$SEARCH("[.UU]*.*").NES."" ) THEN DELETE/NOLOG/NOCONFIRM [.UU]*.*;*
$ ENDIF
$!: Configure runs within the UU subdirectory
$ SET DEFAULT [.UU]
$ ENDIF
$ ELSE
$ echo4 "Looks good..."
-$ DELETE/NOLOG MISSING.;
+$ DELETE/NOLOG/NOCONFIRM MISSING.;
$ ENDIF ! (miss_list .NES. "")
$ ENDIF ! (manifestfound .EQS. "") ELSE
$!
$!
$ 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_symbols2 ="|prefix|privlib|privlibexp|scriptdir|sitearch|sitearchexp|sitebin|sitelib|sitelib_stem|sitelibexp|try_cxx|use64bitall|use64bitint|"
$ config_symbols3 ="|usecasesensitive|usedefaulttypes|usedevel|useieee|useithreads|usemultiplicity|usemymalloc|usedebugging_perl|useperlio|usesecurelog|"
$ config_symbols4 ="|usethreads|usevmsdebug|"
$!
$!: get the patchlevel
$ echo ""
$ echo4 "Getting the current patchlevel..."
+$ patchlevel="0"
+$ subversion="0"
+$ api_revision="0"
+$ api_version="0"
+$ api_subversion="0"
+$ perl_patchlevel="0"
$ patchlevel_h = F$SEARCH("[-]patchlevel.h")
$ IF (patchlevel_h.NES."")
$ THEN
THEN GOTO Patchlevel_h_loop
$Close_patch:
$ CLOSE CONFIG
-$ ELSE
-$ patchlevel="0"
-$ subversion="0"
-$ api_revision="0"
-$ api_version="0"
-$ api_subversion="0"
-$ perl_patchlevel="0"
$ ENDIF
$ version_patchlevel_string = "version ''patchlevel' subversion ''subversion'"
$ IF got_perl_patchlevel .AND. perl_patchlevel .NES. "0"
$ GOSUB myread
$ bin = ans
$!
+$!: determine where add-on public executables go
+$ IF F$TYPE(sitebin) .NES. ""
+$ THEN dflt = sitebin
+$ ELSE dflt = "''vms_prefix':[bin.''archname']"
+$ ENDIF
+$ rp = "Pathname where the add-on public executables should be installed? "
+$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
+$ GOSUB myread
+$ sitebin = ans
+$!
$!: determine where manual pages are on this system
$!: What suffix to use on installed man pages
$!: see if we can have long filenames
sitearch="''vms_prefix':[lib.site_perl.''archname']"
$ IF F$TYPE(sitelib) .EQS. "" THEN -
sitelib ="''vms_prefix':[lib.site_perl]"
+$ IF F$TYPE(sitebin) .EQS. "" THEN -
+ sitebin="''vms_prefix':[bin.''archname']"
$ ENDIF !%Config-I-VMS, skip "where install" questions
$!
$! These derived locations can be set whether we've opted to
$ WRITE CONFIG "}"
$ CLOSE CONFIG
$!
-$! DEFINE SYS$ERROR _NLA0:
-$! DEFINE SYS$OUTPUT _NLA0:
+$ SET NOON
+$ DEFINE/USER_MODE SYS$ERROR _NLA0:
+$ DEFINE/USER_MODE SYS$OUTPUT _NLA0:
$ cc/NoObj/list=ccvms.lis ccvms.c
$ tmp = $status
-$! DEASSIGN SYS$OUTPUT
-$! DEASSIGN SYS$ERROR
+$ SET ON
$ IF (silent) THEN GOSUB Shut_up
$ IF tmp.NE.%X10B90001
$ THEN
$ THEN
$ echo "Will try cc/decc..."
$ ENDIF
+$ SET NOON
$ DEFINE/USER_MODE SYS$ERROR NL:
$ DEFINE/USER_MODE SYS$OUTPUT NL:
-$ SET NOON
$ cc/decc/NoObj/list=ccvms.lis ccvms.c
$ tmp = $status
$ SET ON
$Gcc_initial_check:
$ echo "Checking for gcc"
$ OPEN/WRITE CONFIG gccvers.lis
+$ SET NOON
$ DEFINE/USER_MODE SYS$ERROR CONFIG
$ DEFINE/USER_MODE SYS$OUTPUT CONFIG
$ 'gcc_symbol'/noobj/version _nla0:
$ tmp = $status
+$ SET ON
$ IF (silent) THEN GOSUB Shut_up
$ CLOSE CONFIG
$ IF (tmp.NE.%X10000001).and.(tmp.ne.%X00030001)
$ echo "You are using Dec C ''line'"
$ ccversion = line
$ Dec_C_Version = F$INTEGER(line)
-$ IF Dec_C_Version .GE. 60200000
+$ IF Dec_C_Version .GE. 60200000 .AND. archname .NES. "VMS_VAX"
$ THEN
$ echo4 "adding /NOANSI_ALIAS qualifier to ccflags."
$ ccflags = ccflags + "/NOANSI_ALIAS"
$ ELSE
$ Has_socketshr = "F"
$ ENDIF
-$ IF (ccname .EQS. "DEC" .AND. Dec_C_Version .GE. 50200000) .OR. -
- (ccname .EQS. "CXX")
+$ IF (ccname .EQS. "DEC" .AND. Dec_C_Version .GE. 50200000) .OR. (ccname .EQS. "CXX")
$ THEN
$ Has_Dec_C_Sockets = "T"
$ echo ""
$ IF Has_Dec_C_Sockets
$ THEN
$ dflt = "DECC"
-$ else
+$ ELSE
$ dflt = "SOCKETSHR"
-$ endif
+$ ENDIF
$ rp = "Choose socket stack (NONE"
$ IF Has_socketshr THEN rp = rp + ",SOCKETSHR"
$ IF Has_Dec_C_Sockets THEN rp = rp + ",DECC"
$ 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"
+$ IF ans.eqs."decc" THEN Has_Dec_C_Sockets = "T"
+$ IF ans.eqs."socketshr" THEN Has_socketshr = "T"
$ ENDIF
$!
$!
$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
$ THEN
$ 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*."
+$ echo "Perl can be built to take advantage of threads on some systems."
+$ echo "To do so, configure.com can be run with -""Dusethreads""."
+$ echo ""
+$ echo "Note that Perl built with threading support runs slightly slower"
+$ echo "and uses more memory than plain Perl. The current implementation"
+$ echo "is believed to be stable, but it is fairly new, and so should be"
+$ echo "treated with caution."
+$ echo ""
$ 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'] "
+$! Catch cases where user specified ithreads or 5005threads but
+$! forgot -Dusethreads
+$ if f$type(useithreads) .nes. ""
+$ then
+$ if useithreads .or. useithreads .eqs. "define" then bool_dflt="y"
+$ endif
+$ if f$type(use5005threads) .nes. ""
+$ then
+$ if use5005threads .or. use5005threads .eqs. "define" then bool_dflt="y"
+$ endif
+$ echo "If this doesn't make any sense to you, just accept the default '" + bool_dflt + "'."
+$ rp = "Build a threading Perl? [''bool_dflt'] "
$ GOSUB myread
$ if ans
$ THEN
$ use_threads="T"
-$ ! Shall we do the 5.005-stype threads, or IThreads?
-$ echo "As of 5.5.640, Perl has two different internal threading"
-$ echo "implementations, the 5.005 version (5005threads) and an"
-$ echo "interpreter-based version (ithreads) that has one"
-$ echo "interpreter per thread. Both are very experimental. This"
-$ echo "arrangement exists to help developers work out which one"
-$ echo "is better."
+$ ! Shall we do the 5.005-type threads, or IThreads?
+$ echo "Since release 5.6, Perl has had two different threading implementations,"
+$ echo "the newer interpreter-based version (ithreads) with one interpreter per"
+$ echo "thread, and the older 5.005 version (5005threads)."
+$ echo "The 5005threads version is effectively unmaintained and will probably be"
+$ echo "removed in Perl 5.10, so there should be no need to build a Perl using it"
+$ echo "unless needed for backwards compatibility with some existing 5.005threads"
+$ echo "code."
$ echo ""
-$ echo "If you are a casual user, you probably do not want"
-$ 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 ""
-$ bool_dflt = "n"
+$ bool_dflt = "y"
$ if f$type(useithreads) .nes. ""
$ then
-$ if useithreads .eqs. "define" then bool_dflt="y"
+$ if useithreads .eqs. "undef" then bool_dflt="n"
$ endif
-$ rp = "Build with Interpreter threads? [''bool_dflt'] "
+$ if f$type(use5005threads) .nes. ""
+$ then
+$ if use5005threads .or. use5005threads .eqs. "define" then bool_dflt="n"
+$ endif
+$ rp = "Use the newer intepreter-based ithreads? [''bool_dflt'] "
$ GOSUB myread
$ use_ithreads=ans
$ if use_ithreads
$ IF xxx .EQS. "DynaLoader" THEN goto ext_loop ! omit
$ IF xxx .EQS. "SDBM_File/sdbm" THEN goto ext_loop ! sub extension - omit
$ IF xxx .EQS. "Devel/PPPort/harness" THEN goto ext_loop ! sub extension - omit
-$ IF xxx .EQS. "Encode/EUC_JP" 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'"
$ ENDIF
$ IF .NOT. use_ithreads THEN dflt = dflt - "threads/shared"
$ IF .NOT. use_ithreads THEN dflt = dflt - "threads"
+$ IF .NOT. use_threads THEN dflt = dflt - "Thread"
$ dflt = F$EDIT(dflt,"TRIM,COMPRESS")
$!
$! Ask for their default list of extensions to build
$ ENDIF
$ ENDIF
$!
-$ DELETE/NOLOG Makefile.;
+$ DELETE/NOLOG/NOCONFIRM Makefile.;
$ GOTO Beyond_open
$Open_error:
$ TYPE SYS$INPUT:
$ startperl="""$ perl 'f$env(\""procedure\"")' \""'"+"'p1'\"" \""'"+"'p2'\"" \""'"+"'p3'\"" \""'"+"'p4'\"" \""'"+"'p5'\"" \""'"+"'p6'\"" \""'"+"'p7'\"" \""'"+"'p8'\""!\n"
$ startperl=startperl + "$ exit++ + ++$status!=0 and $exit=$status=undef; while($#ARGV != -1 and $ARGV[$#ARGV] eq '"+"'){pop @ARGV;}"""
$!
-$ IF ((Use_Threads) .AND. (vms_ver .LES. "6.2"))
+$ IF ((use_threads) .AND. (vms_ver .LES. "6.2"))
$ THEN
$ libs="SYS$SHARE:CMA$LIB_SHR.EXE/SHARE SYS$SHARE:CMA$RTL.EXE/SHARE SYS$SHARE:CMA$OPEN_LIB_SHR.exe/SHARE SYS$SHARE:CMA$OPEN_RTL.exe/SHARE"
$ ELSE
$ IF use64bitint .OR. use64bitint .EQS. "define"
$ THEN
$ d_PRId64 = "define"
-$ d_PRIEUldbl = "define"
-$ d_PRIFUldbl = "define"
-$ d_PRIGUldbl = "define"
-$ d_PRIeldbl = "define"
-$ d_PRIfldbl = "define"
-$ d_PRIgldbl = "define"
$ d_PRIu64 = "define"
$ d_PRIo64 = "define"
$ d_PRIx64 = "define"
$ d_PRIXU64 = "define"
$ sPRId64 = """Ld"""
-$ sPRIEUldbl = """LE"""
-$ sPRIFUldbl = """LF"""
-$ sPRIGUldbl = """LG"""
$ sPRIXU64 = """LX"""
-$ sPRIeldbl = """Le"""
-$ sPRIfldbl = """Lf"""
-$ sPRIgldbl = """Lg"""
$ sPRIi64 = """Li"""
$ sPRIo64 = """Lo"""
$ sPRIu64 = """Lu"""
$ d_modfl = "define"
$ ELSE
$ d_PRId64 = "undef"
-$ d_PRIEUldbl = "define"
-$ d_PRIFUldbl = "define"
-$ d_PRIGUldbl = "define"
$ d_PRIXU64 = "undef"
-$ d_PRIeldbl = "define"
-$ d_PRIfldbl = "undef"
-$ d_PRIgldbl = "undef"
$ d_PRIu64 = "undef"
$ d_PRIo64 = "undef"
$ d_PRIx64 = "undef"
$ sPRId64 = ""
-$ sPRIEUldbl = """E"""
-$ sPRIFUldbl = """F"""
-$ sPRIGUldbl = """G"""
$ sPRIXU64 = """lX"""
-$ sPRIeldbl = """e"""
-$ sPRIfldbl = """f"""
-$ sPRIgldbl = """g"""
$ sPRIi64 = ""
$ sPRIo64 = ""
$ sPRIu64 = ""
$ d_isnanl = "undef"
$ d_modfl = "undef"
$ ENDIF
-$ d_SCNfldbl = d_PRIfldbl
-$ sSCNfldbl = sPRIfldbl ! expect consistency
$!
$! Now some that we build up
$!
-$ IF Use_Threads
+$ IF use_threads
$ THEN
$ IF use_5005_threads
$ THEN
$!
$ OS
$ WS "#if defined(__DECC) || defined(__DECCXX)"
+$ WS "#pragma message disable ALL" ! VAX compilers may have distracting informationals
$ WS "#include <stdlib.h>"
$ WS "#endif"
$ WS "#include <stdio.h>"
$ echo "Your long doubles are ''longdblsize' bytes long."
$ ENDIF
$!
+$ IF d_longdbl .OR. d_longdbl .EQS. "define"
+$ THEN
+$ d_PRIEUldbl = "define"
+$ d_PRIFUldbl = "define"
+$ d_PRIGUldbl = "define"
+$ d_PRIeldbl = "define"
+$ d_PRIfldbl = "define"
+$ d_PRIgldbl = "define"
+$ sPRIEUldbl = """LE"""
+$ sPRIFUldbl = """LF"""
+$ sPRIGUldbl = """LG"""
+$ sPRIeldbl = """Le"""
+$ sPRIfldbl = """Lf"""
+$ sPRIgldbl = """Lg"""
+$ ELSE
+$ d_PRIEUldbl = "undef"
+$ d_PRIFUldbl = "undef"
+$ d_PRIGUldbl = "undef"
+$ d_PRIeldbl = "undef"
+$ d_PRIfldbl = "undef"
+$ d_PRIgldbl = "undef"
+$ sPRIEUldbl = ""
+$ sPRIFUldbl = ""
+$ sPRIGUldbl = ""
+$ sPRIeldbl = ""
+$ sPRIfldbl = ""
+$ sPRIgldbl = ""
+$ ENDIF
+$ d_SCNfldbl = d_PRIfldbl
+$ sSCNfldbl = sPRIfldbl ! expect consistency
+$!
$!: check for long long
$ OS
$ WS "#if defined(__DECC) || defined(__DECCXX)"
$ GOSUB inhdr
$ i_unistd = tmp
$!
+$! do we have getppid()?
+$!
+$ IF i_unistd .EQS. "define"
+$ THEN
+$ OS
+$ WS "#include <stdio.h>"
+$ WS "#include <unistd.h>"
+$ WS "int main() {"
+$ WS "printf(""%d\n"",getppid());"
+$ WS "return(0);"
+$ WS "}"
+$ CS
+$ tmp = "getppid"
+$ GOSUB inlibc
+$ d_getppid = tmp
+$ ELSE
+$ d_getppid = "undef"
+$ ENDIF
+$!
$!: see if this is a libutil.h system
$!
$ tmp = "libutil.h"
$ i_locale="define"
$ i_langinfo="define"
$ d_locconv="define"
-$ d_nl_langinfo="define"
+$ IF vms_ver .GES. "6.2"
+$ THEN
+$ d_nl_langinfo="define"
+$ ELSE
+$ d_nl_langinfo="undef"
+$ ENDIF
$ d_setlocale="define"
$ vms_cc_type="decc"
$ ELSE
$ THEN
$ d_nv_preserves_uv = "define"
$ echo "Yes, they can."
-$ d_nv_preserves_uv_bits = F$STRING(F$INTEGER(uvsize) * 8)
+$ nv_preserves_uv_bits = F$STRING(F$INTEGER(uvsize) * 8)
$ ELSE
$ d_nv_preserves_uv = "undef"
$ echo "No, they can't."
$ WS "}"
$ CS
$ GOSUB compile
-$ d_nv_preserves_uv_bits = tmp
+$ nv_preserves_uv_bits = tmp
$ ENDIF
$!
-$ echo4 "Checking whether your kill() uses SYS$FORCEX..."
+$ echo4 "Checking if kill() uses SYS$FORCEX or can't be called from a signal handler..."
$ kill_by_sigprc = "undef"
$ OS
$ WS "#include <stdio.h>"
$ WS "#include <signal.h>"
-$ WS "void handler(int s) { printf(""%d\n"",s); } "
+$ WS "#include <unistd.h>"
+$ WS "void handler1(int s) { printf(""%d"",s); kill(getpid(),2); }"
+$ WS "void handler2(int s) { printf(""%d"",s); }"
$ WS "main(){"
$ WS " printf(""0"");"
-$ WS " signal(1,handler); kill(0,1);"
+$ WS " signal(1,handler1);"
+$ WS " signal(2,handler2);"
+$ WS " kill(getpid(),1);"
+$ WS " sleep(1);"
+$ WS " printf(""\n"");"
$ WS "}"
$ CS
$ ON ERROR THEN CONTINUE
$ GOSUB compile
-$ IF tmp .NES. "01"
+$ IF tmp .NES. "012"
$ THEN
-$ echo "Yes, it does."
-$ echo4 "Checking whether we can use SYS$SIGPRC instead"
+$ echo4 "Yes, it has at least one of those limitations."
+$ echo4 "Checking whether we can use SYS$SIGPRC instead..."
$ OS
$ WS "#include <stdio.h>"
$ WS "#include <lib$routines.h>"
$ GOSUB compile
$ IF tmp .EQS. "1"
$ THEN
-$ echo "looks like we can"
+$ echo4 "Yep, we can."
$ kill_by_sigprc = "define"
$!
$! since SIGBUS and SIGSEGV indistinguishable, make them the same here.
$ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,10,12,13,14,15,6,0"
$ sig_size="17"
$ endif
+$ ELSE
+$ echo4 "Nope, we can't."
$ ENDIF
+$ ELSE
+$ echo4 "Nope, it doesn't."
$ ENDIF
$ DELETE/SYMBOL tmp
$!
$ WC "PERL_SUBVERSION='" + subversion + "'"
$ WC "PERL_API_VERSION='" + api_version + "'"
$ WC "PERL_API_SUBVERSION='" + api_subversion + "'"
+$ WC "_a='" + lib_ext + "'"
+$ WC "_exe='" + exe_ext + "'"
+$ WC "_o='" + obj_ext + "'"
$ WC "alignbytes='" + alignbytes + "'"
$ WC "aphostname='write sys$output f$edit(f$getsyi(\""SCSNODE\""),\""TRIM,LOWERCASE\"")'"
$ WC "ar='" + "'"
$ WC "d_bcmp='" + d_bcmp + "'"
$ WC "d_bcopy='" + d_bcopy + "'"
$ WC "d_bincompat3='undef'"
-$ WC "d_bincompat5005='undef'"
$! WC "d_bsdpgrp='undef'"
$ WC "d_bsdgetpgrp='undef'"
$ WC "d_bsdsetpgrp='undef'"
$ WC "d_getpgid='undef'"
$ WC "d_getpgrp2='undef'"
$ WC "d_getpgrp='undef'"
-$ WC "d_getppid='undef'"
+$ WC "d_getppid='" + d_getppid + "'"
$ WC "d_getprior='undef'"
$ WC "d_getprotoprotos='" + d_getprotoprotos + "'"
$ WC "d_getprpwnam='undef'"
$ WC "d_nice='define'"
$ WC "d_nl_langinfo='" + d_nl_langinfo + "'"
$ WC "d_nv_preserves_uv='" + d_nv_preserves_uv + "'"
-$ WC "d_nv_preserves_uv_bits='" + d_nv_preserves_uv_bits + "'"
+$ WC "nv_preserves_uv_bits='" + nv_preserves_uv_bits + "'"
$ WC "d_off64_t='" + d_off64_t + "'"
$ WC "d_old_pthread_create_joinable='" + d_old_pthread_create_joinable + "'"
$ WC "d_oldarchlib='define'"
$ WC "d_tcsetpgrp='undef'"
$ WC "d_telldir='define'"
$ WC "d_telldirproto='define'"
+$ WC "d_time='define'"
$ WC "d_times='define'"
+$ IF ("''F$EXTRACT(1,3, F$GETSYI(""VERSION""))'".GES."7.0")
+$ THEN
+$ WC "d_tm_tm_gmtoff='define'"
+$ WC "d_tm_tm_zone='define'"
+$ ELSE
+$ WC "d_tm_tm_gmtoff='undef'"
+$ WC "d_tm_tm_zone='undef'"
+$ ENDIF
$ WC "d_truncate='" + d_truncate + "'"
$ WC "d_tzname='" + d_tzname + "'"
$ WC "d_u32align='define'"
$ WC "d_writev='undef'"
$ WC "db_hashtype=' '"
$ WC "db_prefixtype=' '"
+$ WC "db_version_major='" + "'"
+$ WC "db_version_minor='" + "'"
+$ WC "db_version_patch='" + "'"
$ WC "dbgprefix='" + dbgprefix + "'"
$ WC "defvoidused='15'"
$ WC "devtype='" + devtype + "'"
$ WC "i8size='" + i8size + "'"
$ WC "i8type='" + i8type + "'"
$ WC "i_arpainet='undef'"
+$ WC "i_crypt='undef'"
+$ WC "i_db='undef'"
$ WC "i_dbm='undef'"
$ WC "i_dirent='" + i_dirent + "'"
$ WC "i_dlfcn='undef'"
$ WC "installbin='" + installbin + "'"
$ WC "installman1dir='" + installman1dir + "'"
$ WC "installman3dir='" + installman3dir + "'"
+$ WC "installprefix='" + vms_prefix + "'"
+$ WC "installprefixexp='" + vms_prefix + ":'"
$ WC "installprivlib='" + installprivlib + "'"
$ WC "installscript='" + installscript + "'"
$ WC "installsitearch='" + installsitearch + "'"
+$ WC "installsitebin='" + sitebin + "'"
$ WC "installsitelib='" + installsitelib + "'"
$ WC "installusrbinperl='undef'"
$ WC "intsize='" + intsize + "'"
$ WC "perl_root='" + perl_root + "'" ! VMS specific $trnlnm()
$ WC "perladmin='" + perladmin + "'"
$ WC "perllibs='" + perllibs + "'"
+$ WC "perlpath='" + "''vms_prefix':[000000]Perl''ext'" + "'"
$ WC "perl_symbol='" + perl_symbol + "'" ! VMS specific
$ WC "perl_verb='" + perl_verb + "'" ! VMS specific
$ WC "pgflquota='" + pgflquota + "'"
$ WC "signal_t='" + signal_t + "'"
$ WC "sitearch='" + sitearch + "'"
$ WC "sitearchexp='" + sitearchexp + "'"
+$ WC "sitebin='" + sitebin + "'"
+$ WC "sitebinexp='" + sitebin + "'"
$ WC "sitelib='" + sitelib + "'"
$ WC "sitelib_stem='" + sitelib_stem + "'"
$ WC "sitelibexp='" + sitelibexp + "'"
+$ WC "siteprefix='" + vms_prefix + "'"
+$ WC "siteprefixexp='" + vms_prefix + ":'"
$ WC "sizesize='" + sizesize + "'"
$ WC "sizetype='size_t'"
$ WC "so='" + so + "'"
$ WC "usesecurelog='" + usesecurelog + "'" ! VMS-specific
$ WC "usesocks='undef'"
$ WC "usethreads='" + usethreads + "'"
+$ WC "usevendorprefix='" + "'" ! try to say no, though we'll be ignored as of MM 5.90_01
$ WC "usevfork='true'"
$ WC "usevmsdebug='" + usevmsdebug + "'" ! VMS-specific
$ WC "uvoformat='" + uvoformat + "'"
$ WC "uvuformat='" + uvuformat + "'"
$ WC "uvxformat='" + uvxformat + "'"
$ WC "uvXUformat='" + uvXUformat + "'"
+$ WC "vendorarch='" + "'"
$ WC "vendorarchexp='" + "'"
+$ WC "vendorbin='" + "'"
+$ WC "vendorbinexp='" + "'"
$ WC "vendorlib_stem='" + "'"
+$ WC "vendorlib='" + "'"
$ WC "vendorlibexp='" + "'"
+$ WC "vendorprefix='" + "'"
+$ WC "vendorprefixexp='" + "'"
$ WC "version='" + version + "'"
$ WC "version_patchlevel_string='" + version_patchlevel_string + "'"
$ WC "vms_cc_type='" + vms_cc_type + "'" ! VMS specific
$ WC "xs_apiversion='" + version + "'"
$ WC "PERL_CONFIG_SH='true'"
$!
+$! ## The UNIXy POSIXy reentrantey thingys ##
+$! See "Appendix B, Version-Dependency Tables" in the C RTL
+$! manual for when assorted _r functions became available.
+$!
+$ IF use_threads .AND. vms_ver .GES. "7.2"
+$ THEN
+$ WC "asctime_r_proto='REENTRANT_PROTO_B_SB'"
+$ WC "d_asctime_r='define'"
+$ WC "ctime_r_proto='REENTRANT_PROTO_B_SB'"
+$ WC "d_ctime_r='define'"
+$ ELSE
+$ WC "asctime_r_proto='0'"
+$ WC "d_asctime_r='undef'"
+$ WC "ctime_r_proto='0'"
+$ WC "d_ctime_r='undef'"
+$ ENDIF
+$ IF use_threads .AND. vms_ver .GES. "7.3-1"
+$ THEN
+$ WC "readdir_r_proto='REENTRANT_PROTO_I_TSR'"
+$ WC "d_readdir_r='define'"
+$ ELSE
+$ WC "readdir_r_proto='0'"
+$ WC "d_readdir_r='undef'"
+$ ENDIF
+$ WC "d_crypt_r='undef'"
+$ WC "d_ctermid_r='undef'"
+$ WC "d_drand48_r='undef'"
+$ WC "d_endgrent_r='undef'"
+$ WC "d_endhostent_r='undef'"
+$ WC "d_endnetent_r='undef'"
+$ WC "d_endprotoent_r='undef'"
+$ WC "d_endpwent_r='undef'"
+$ WC "d_endservent_r='undef'"
+$ WC "d_getgrent_r='undef'"
+$ WC "d_getgrgid_r='undef'"
+$ WC "d_getgrnam_r='undef'"
+$ WC "d_gethostbyaddr_r='undef'"
+$ WC "d_gethostbyname_r='undef'"
+$ WC "d_gethostent_r='undef'"
+$ WC "d_getlogin_r='undef'"
+$ WC "d_getnetbyaddr_r='undef'"
+$ WC "d_getnetbyname_r='undef'"
+$ WC "d_getnetent_r='undef'"
+$ WC "d_getprotobyname_r='undef'"
+$ WC "d_getprotobynumber_r='undef'"
+$ WC "d_getprotoent_r='undef'"
+$ WC "d_getpwent_r='undef'"
+$ WC "d_getpwnam_r='undef'"
+$ WC "d_getpwuid_r='undef'"
+$ WC "d_getservbyname_r='undef'"
+$ WC "d_getservbyport_r='undef'"
+$ WC "d_getservent_r='undef'"
+$ WC "d_getspnam_r='undef'"
+$ WC "d_gmtime_r='undef'" ! leave undef'd; we use my_gmtime
+$ WC "d_localtime_r='undef'" ! leave undef'd; we use my_localtime
+$ WC "d_random_r='undef'"
+$ WC "d_readdir64_r='undef'"
+$ WC "d_setgrent_r='undef'"
+$ WC "d_sethostent_r='undef'"
+$ WC "d_setlocale_r='undef'"
+$ WC "d_setnetent_r='undef'"
+$ WC "d_setprotoent_r='undef'"
+$ WC "d_setpwent_r='undef'"
+$ WC "d_setservent_r='undef'"
+$ WC "d_srand48_r='undef'"
+$ WC "d_srandom_r='undef'"
+$ WC "d_strerror_r='undef'"
+$ WC "d_tmpnam_r='undef'"
+$ WC "d_ttyname_r='undef'"
+$ WC "ctermid_r_proto='0'"
+$ WC "crypt_r_proto='0'"
+$ WC "drand48_r_proto='0'"
+$ WC "endgrent_r_proto='0'"
+$ WC "endhostent_r_proto='0'"
+$ WC "endnetent_r_proto='0'"
+$ WC "endprotoent_r_proto='0'"
+$ WC "endpwent_r_proto='0'"
+$ WC "endservent_r_proto='0'"
+$ WC "getgrent_r_proto='0'"
+$ WC "getgrgid_r_proto='0'"
+$ WC "getgrnam_r_proto='0'"
+$ WC "gethostbyaddr_r_proto='0'"
+$ WC "gethostbyname_r_proto='0'"
+$ WC "gethostent_r_proto='0'"
+$ WC "getlogin_r_proto='0'"
+$ WC "getnetbyaddr_r_proto='0'"
+$ WC "getnetbyname_r_proto='0'"
+$ WC "getnetent_r_proto='0'"
+$ WC "getprotobyname_r_proto='0'"
+$ WC "getprotobynumber_r_proto='0'"
+$ WC "getprotoent_r_proto='0'"
+$ WC "getpwent_r_proto='0'"
+$ WC "getpwnam_r_proto='0'"
+$ WC "getpwuid_r_proto='0'"
+$ WC "getservbyname_r_proto='0'"
+$ WC "getservbyport_r_proto='0'"
+$ WC "getservent_r_proto='0'"
+$ WC "getspnam_r_proto='0'"
+$ WC "gmtime_r_proto='0'"
+$ WC "localtime_r_proto='0'"
+$ WC "random_r_proto='0'"
+$ WC "readdir64_r_proto='0'"
+$ WC "setgrent_r_proto='0'"
+$ WC "sethostent_r_proto='0'"
+$ WC "setlocale_r_proto='0'"
+$ WC "setnetent_r_proto='0'"
+$ WC "setprotoent_r_proto='0'"
+$ WC "setpwent_r_proto='0'"
+$ WC "setservent_r_proto='0'"
+$ WC "srand48_r_proto='0'"
+$ WC "srandom_r_proto='0'"
+$ WC "strerror_r_proto='0'"
+$ WC "tmpnam_r_proto='0'"
+$ WC "ttyname_r_proto='0'"
+$!
$! ##END WRITE NEW CONSTANTS HERE##
$!
$ CLOSE CONFIG
$ ! Concatenate them together
$ copy [-]config.local,[-]config.main [-]config.h
$! Clean up
-$ DELETE/NOLOG [-]CONFIG.MAIN;*
-$ DELETE/NOLOG [-]CONFIG.LOCAL;*
-$ DELETE/NOLOG [-]CONFIG.FDL;*
+$ DELETE/NOLOG/NOCONFIRM [-]CONFIG.MAIN;*
+$ DELETE/NOLOG/NOCONFIRM [-]CONFIG.LOCAL;*
+$ DELETE/NOLOG/NOCONFIRM [-]CONFIG.FDL;*
$!
$ IF ccname .EQS. "DEC"
$ THEN
$ SOCKET_REPLACE = "SOCKET="
$ ENDIF
$ ENDIF
-$ IF Use_Threads
+$ IF use_threads
$ THEN
$ IF (vms_ver .LES. "6.2")
$ THEN
$ On Error Then Continue
$ EndIf
$ If redesc Then -
- miniperl "-I[''up'.lib]" Makefile.PL "INST_LIB=[''up'.lib]" "INST_ARCHLIB=[''up'.lib]"
+ miniperl "-I[''up'.lib]" Makefile.PL "INST_LIB=[''up'.lib]" "INST_ARCHLIB=[''up'.lib]" "PERL_CORE=1"
$ makeutil 'targ'
$ i = i + 1
$ Set Def &def
$ ENDSUBROUTINE ! Bad_environment
$ echo ""
$ echo4 "Checking for dangerous pre-existing global symbols and logical names."
-$ CALL Bad_environment "TMP"
+$ CALL Bad_environment "EXT"
+$ CALL Bad_environment "FOO"
$ CALL Bad_environment "LIB"
+$ CALL Bad_environment "LIST"
+$ CALL Bad_environment "MIME"
+$ CALL Bad_environment "POSIX"
+$ CALL Bad_environment "SYS"
$ CALL Bad_environment "T"
-$ CALL Bad_environment "FOO"
-$ CALL Bad_environment "EXT"
+$ CALL Bad_environment "THREAD"
+$ CALL Bad_environment "THREADS"
+$ CALL Bad_environment "TIME"
+$ CALL Bad_environment "TMP"
+$ CALL Bad_environment "UNICODE"
+$ CALL Bad_environment "UTIL"
$ CALL Bad_environment "TEST" "SYMBOL"
$ IF f$search("config.msg") .eqs. "" THEN echo "OK."
$!
$ echo ""
$ echo4 "The perl_setup.com file is now being written..."
$ file_2_find = "[-]perl_setup.com"
-$ OPEN/WRITE CONFIG 'file_2_find'
+$!
+$! Folks are likely to want to edit perl_setup.com.
+$! STMLF RFM plays nicer with ported editors than does VFC.
+$!
+$ CREATE [-]CONFIG.FDL
+$ DECK
+RECORD
+ FORMAT STREAM_LF
+$ EOD
+$ CREATE /FDL=[-]CONFIG.FDL 'file_2_find'
+$ OPEN/APPEND CONFIG 'file_2_find'
+$ DELETE/NOLOG/NOCONFIRM [-]CONFIG.FDL;
$ WRITE CONFIG "$!"
$ WRITE CONFIG "$! Perl_Setup.com ''cf_time'"
$ IF cf_email.NES.perladmin
$!
$ IF ( F$SEARCH("config.msg").NES."" )
$ THEN
-$ echo "Hmm. I also noted the following information while running:"
-$ echo ""
-$ type config.msg
+$ echo4 "Hmm. I also noted the following information while running:"
+$ echo4 ""
+$ TYPE/OUTPUT=SYS$ERROR: config.msg
$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) config.msg
$ DELETE/NOLOG/NOCONFIRM config.msg;
$ ENDIF