$ 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
$!
$ 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/CN" THEN goto ext_loop ! sub extension - omit
-$ IF xxx .EQS. "Encode/JP" THEN goto ext_loop ! sub extension - omit
-$ IF xxx .EQS. "Encode/KR" THEN goto ext_loop ! sub extension - omit
-$ IF xxx .EQS. "Encode/TW" 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
$ ENDIF
$!
-$ DELETE/NOLOG Makefile.;
+$ DELETE/NOLOG/NOCONFIRM Makefile.;
$ GOTO Beyond_open
$Open_error:
$ TYPE SYS$INPUT:
$ 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
$!
$!
$ 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
$ WC "PERL_API_VERSION='" + api_version + "'"
$ WC "PERL_API_SUBVERSION='" + api_subversion + "'"
$ WC "_a='" + lib_ext + "'"
-$ WC "_ext='" + exe_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 "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_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 "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 "voidflags='15'"
$ 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.
$!
-
-$ WC "asctime_r_proto='0'"
-$ WC "crypt_r_proto='0'"
-$ WC "ctermid_r_proto='0'"
-$ WC "ctime_r_proto='0'"
-$ WC "d_asctime_r='undef'"
+$ 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_ctime_r='undef'"
$ WC "d_drand48_r='undef'"
$ WC "d_endgrent_r='undef'"
$ WC "d_endhostent_r='undef'"
$ WC "d_getservbyport_r='undef'"
$ WC "d_getservent_r='undef'"
$ WC "d_getspnam_r='undef'"
-$ WC "d_gmtime_r='undef'"
-$ WC "d_localtime_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_readdir_r='undef'"
$ WC "d_setgrent_r='undef'"
$ WC "d_sethostent_r='undef'"
$ WC "d_setlocale_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 "getservent_r_proto='0'"
$ WC "getspnam_r_proto='0'"
$ WC "gmtime_r_proto='0'"
-$ WC "i_crypt='undef'"
$ WC "localtime_r_proto='0'"
$ WC "random_r_proto='0'"
$ WC "readdir64_r_proto='0'"
-$ WC "readdir_r_proto='0'"
$ WC "setgrent_r_proto='0'"
$ WC "sethostent_r_proto='0'"
$ WC "setlocale_r_proto='0'"
$ WC "srandom_r_proto='0'"
$ WC "strerror_r_proto='0'"
$ WC "tmpnam_r_proto='0'"
-$ WC "ttyname_r_proto='0'
-
+$ WC "ttyname_r_proto='0'"
$!
$! ##END WRITE NEW CONSTANTS HERE##
$!
$ ! 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
$ 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