$ 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)
$ 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."
-$ 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."
+$ ! 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 ""
-$ 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
+$ if f$type(use5005threads) .nes. ""
+$ then
+$ if use5005threads .or. use5005threads .eqs. "define" then bool_dflt="n"
$ endif
-$ rp = "Build with Interpreter threads? [''bool_dflt'] "
+$ rp = "Use the newer intepreter-based ithreads? [''bool_dflt'] "
$ GOSUB myread
$ use_ithreads=ans
$ if use_ithreads
$!
$ 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>"
$ 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"
$ 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'"
$ 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."
$!
$!
$ 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