$ use64bitall = "n"
$ use64bitint = "n"
$ uselargefiles = "n"
+$ usestdstat = "n"
$ usesitecustomize = "n"
$ C_Compiler_Replace = "CC="
-$ Thread_Live_Dangerously = "MT="
+$ thread_upcalls = "MTU="
+$ thread_kernel = "MTK="
$ use_two_pot_malloc = "N"
$ use_pack_malloc = "N"
$ use_debugmalloc = "N"
$ file_2_find = "[-]" + file_2_find
$ ENDIF
$!
+$ tmp = F$PARSE(file_2_find + ";",,,,"SYNTAX_ONLY")
+$ IF F$SEARCH(tmp) .NES. "" THEN file_2_find = tmp
$ dirname = F$EXTRACT(0,F$LOCATE("]",file_2_find),file_2_find) + "]"
$ file_2_find = file_2_find - dirname
$!
$ 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|usefaststdio|usemallocwrap|unlink_all_versions|uselargefiles|usesitecustomize|"
-$ config_symbols5 ="|buildmake|builder|"
+$ config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthreads"
$!
$ open/read CONFIG 'config_sh'
$ rd_conf_loop:
$! Add _ROOT to make install PERL_ROOT differ from build directory.
$ prefix = prefixbase + "_ROOT.]"
$ ENDIF
+$ ! more redundant scrubbing of values
+$ prefix = prefix - "000000."
+$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN prefix = prefix - "]" + ".]"
$ src = prefix
$!: determine root of directory hierarchy where package will be installed.
$ dflt = prefix
$ ELSE
$ use_5005_threads="Y"
$ ENDIF
-$ ! Are they on VMS 7.1 on an alpha or itanium?
-$ if (archname.nes."VMS_VAX").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
+$ ! Are they on VMS 7.1 or greater?
+$ IF "''f$extract(1,3, f$getsyi(""version""))'" .GES. "7.1"
$ THEN
$ echo ""
-$ echo "Threaded perl can be linked to use multiple kernel threads"
-$ echo "and system upcalls on VMS 7.1+ on Alpha systems. This feature"
-$ echo "allows multiple threads to execute simultaneously on an SMP"
-$ echo "system as well as preventing a single thread from blocking"
-$ echo "all the threads in a program, even on a single-processor"
-$ echo "machine. Unfortunately, this feature isn't safe on an"
-$ echo "unpatched 7.1 system (several OS patches were required when"
-$ echo "this procedure was written)."
-$ bool_dflt = "n"
-$ rp = "Enable multiple kernel threads and upcalls? [''bool_dflt'] "
+$ echo "Threaded Perl can be linked to use system upcalls on your system. This feature"
+$ echo "allows the thread scheduler to be made aware of system events (such as I/O)"
+$ echo "so as to prevent a single thread from blocking all the threads in a program,"
+$ echo "even on a single-processor machine."
+$ bool_dflt = "y"
+$ IF f$type(usethreadupcalls) .NES. ""
+$ THEN
+$ if .not. usethreadupcalls .or. usethreadupcalls .eqs. "undef" then bool_dflt="n"
+$ ENDIF
+$ rp = "Enable thread upcalls? [''bool_dflt'] "
$ gosub myread
-$ if ans
+$ IF ans
$ THEN
-$ Thread_Live_Dangerously = "MT=MT=1"
+$ thread_upcalls = "MTU=MTU=1"
+$ usethreadupcalls = "define"
+$ ! Are they on alpha or itanium?
+$ IF (archname .NES. "VMS_VAX") .AND. ("''f$extract(1,3, f$getsyi(""version""))'" .GES. "7.2")
+$ THEN
+$ echo ""
+$ echo "Threaded Perl can be linked to use multiple kernel threads on your system."
+$ echo "This feature allows multiple user threads to make use of multiple CPUs on
+$ echo "a multi-processor machine."
+$ bool_dflt = "n"
+$ IF f$type(usekernelthreads) .nes. ""
+$ THEN
+$ if usekernelthreads .or. usekernelthreads .eqs. "define" then bool_dflt="y"
+$ ENDIF
+$ rp = "Enable multiple kernel threads? [''bool_dflt'] "
+$ gosub myread
+$ IF ans
+$ THEN
+$ thread_kernel = "MTK=MTK=1"
+$ usekernelthreads = "define"
+$ ENDIF
$ ENDIF
$ ENDIF
$ 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?
$ GOSUB inhdr
$ i_unistd = tmp
$!
+$! Check to see if we've got utime.h (which we should use if we have)
+$!
+$ i_netdb = "undef"
+$ tmp = "utime.h"
+$ GOSUB inhdr
+$ i_utime = tmp
+$!
$! do we have getppid()?
$!
$ IF i_unistd .EQS. "define"
$ d_readlink = "undef"
$ d_symlink = "undef"
$ d_realpath = "undef"
-$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
$!
$! Hard link support has been present since 7.3-1 except for the
$! easy to use DCL test to see if hardlinks are enabled on the build
$! disk. That would require more work to test, and I am only testing
$! this on 8.2, so that is why the 8.2 test.
$!
-$ IF (tmp .GES. "8.2") .AND. (f$getsyi("HW_MODEL") .GE. 1024)
+$ IF (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
$ THEN
$ IF f$getdvi("SYS$DISK","HARDLINKS_SUPPORTED")
$ THEN
$ echo "I will not build with hard link support."
$ ENDIF
$ ELSE
-$ echo4 "I can not dected if your CRTL and build disk support hard links."
+$ echo4 "I can not detect if your CRTL and build disk support hard links."
$ echo4 "I am disabling hard link support."
$ ENDIF
$!
$ IF uselargefiles .OR. uselargefiles .eqs. "define"
$ THEN
-$ IF (tmp .GES. "8.2") .AND. (f$getsyi("HW_MODEL") .GE. 1024)
+$ echo4 "Largefile support enabled (plus standard stat support on V8.2 and later)"
+$ usestdstat = "y"
+$ IF (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
$ THEN
$ echo4 -
"Looking for the realpath() function to indicate symbolic link support..."
$ echo4 "I am disabling symbolic link support."
$ ENDIF
$ ELSE
-$ IF (tmp .GES. "8.2") .AND. (f$getsyi("HW_MODEL") .GE. 1024)
+$ IF (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
$ THEN
-$ echo4 "-duselargefiles is required for symbolic link support."
+$ echo4 "-Duselargefiles is required for symbolic link support."
$ echo4 "You did not specify that, so I am disabling symbolic link support."
$ ENDIF
$ ENDIF
$!
$! VMS V7.3-2 powered options
$! We know that it is only available for V7.3-2 and later on 64 bit platforms.
-$! Only implementing right now on 8.2 because that is what I am testing.
$!
$ d_getgrgid_r = "undef"
$ getgrgid_r_proto = "0"
$ d_setgrent = "undef"
$ d_ttyname_r = "undef"
$ ttyname_r_proto = "0"
-$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
-$ if (tmp .GES. "8.2") .AND. (f$getsyi("HW_MODEL") .GE. 1024)
+$ d_snprintf = "undef"
+$ d_vsnprintf = "undef"
+$ if (vms_ver .GES. "7.3-2") .AND. (archname .NES. "VMS_VAX")
$ then
-$ echo "Found 64 bit OpenVMS 8.2, will build with V7.3-2 routines"
+$ echo "Found 64 bit OpenVMS ''vms_ver' -- will build with V7.3-2 routines"
$ d_getgrgid_r = "define"
$ getgrgid_r_proto = "1"
$ d_getgrnam_r = "define"
$ d_setgrent = "define"
$ d_ttyname_r = "define"
$ ttyname_r_proto = "1"
+$ d_snprintf = "define"
+$ d_vsnprintf = "define"
$ endif
$!
$! VMS V7.3-2 powered options
$ d_setregid = "undef"
$ d_setreuid = "undef"
$ d_setsid = "undef"
-$! tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
-$tmp = "" ! Disable this section for now.
-$ if (tmp .GES. "8.2") .AND. (f$getsyi("HW_MODEL") .GE. 1024)
+$ ! Disable this section for now.
+$!$ if (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
+$ if .NOT. 1
$ then
-$ echo "Found 64 bit OpenVMS 8.2, will build with V7.3-2 UID setting routines"
+$ echo "Found 64 bit OpenVMS ''vms_ver' -- will build with V7.3-2 UID setting routines"
$ d_seteuid = "define"
$ d_setpgid = "define"
$ d_setpgrp = "define"
$ d_fstatvfs = "undef"
$! d_statvfs = "undef"
$ i_sysstatvfs = "undef"
-$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
-$ if (tmp .GES. "8.2") .AND. (f$getsyi("HW_MODEL") .GE. 1024)
+$ if (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
$ then
-$ echo "Found 64 bit OpenVMS 8.2, will build with 8.2 routines"
+$ echo "Found 64 bit OpenVMS ''vms_ver' -- will build with 8.2 routines"
$ d_fstatvfs = "define"
$! d_statvfs = "define"
$ i_sysstatvfs = "define"
$ d_htonl="define"
$ d_socket="define"
$ d_sockpair = "undef"
-$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
-$ if (tmp .GES. "8.2") .AND. (f$getsyi("HW_MODEL") .GE. 1024)
+$ if (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
$ then
$ echo "Found 64 bit OpenVMS 8.2, will build with socketpair support"
$ d_sockpair = "define"
$ WC "ccdlflags='" + ccdlflags + "'"
$ IF uselargefiles .OR. uselargefiles .EQS. "define"
$ THEN
-$! Perl can not use _USE_STD_STAT at the moment
-$! IF d_symlink .OR. d_symlink .EQS. "define"
-$! THEN
-$! ccdefines = "_USE_STD_STAT=1"
-$! ELSE
+$ IF usestdstat .OR. usestdstat .EQS. "define"
+$ THEN
+$ ccdefines = "_USE_STD_STAT=1"
+$ ELSE
$ ccdefines = "_LARGEFILE=1"
-$! ENDIF
+$ ENDIF
$ ELSE
$ ccdefines = ""
$ ENDIF
$! WC "d_bsdpgrp='undef'"
$ WC "d_bsdgetpgrp='undef'"
$ WC "d_bsdsetpgrp='undef'"
+$ WC "d_builtin_choose_expr='undef'" ! GCC only
+$ WC "d_builtin_expect='undef'" ! GCC only
$ WC "d_bzero='" + d_bzero + "'"
$ WC "d_casti32='define'"
$ WC "d_castneg='define'"
$ WC "d_dbminitproto='undef'"
$ WC "d_difftime='define'"
$ WC "d_dirfd='undef'"
-$ tmp = f$extract(1,3,f$edit(f$getsyi("VERSION"),"TRIM,COLLAPSE"))
-$ IF (tmp .GES. "8.2") .AND. (f$getsyi("HW_MODEL") .GE. 1024)
-$ then
-$! Sorry, CRTL does not have this, and in order to support
-$! POSIX filespecifications, the CRTL readdir() structures
-$! need to be used globaly for now.
-$ echo "Building for OpenVMS 8.2 uses CRTL dirent.h, so no dirnamlen member"
-$ WC "d_dirnamlen='undef'"
-$ else
-$ WC "d_dirnamlen='define'"
-$ endif
+$ WC "d_dirnamlen='define'"
$ WC "d_dlerror='undef'"
$ WC "d_dlsymun='undef'"
$ WC "d_dosuid='undef'"
$ WC "d_hasmntopt='undef'"
$ WC "d_htonl='" + d_htonl + "'"
$ WC "d_ilogbl='undef'"
+$ WC "d_inc_version_list='undef'"
$ WC "d_index='" + d_index + "'"
$ WC "d_inetaton='undef'"
$ WC "d_int64_t='" + d_int64_t + "'"
$ WC "d_sigaction='" + d_sigaction + "'"
$ WC "d_sigprocmask='" + d_sigprocmask + "'"
$ WC "d_sigsetjmp='" + d_sigsetjmp + "'"
+$ WC "d_sitearch='define'"
$ WC "d_sockatmark='undef'"
$ WC "d_sockatmarkproto='undef'"
$ WC "d_socket='" + d_socket + "'"
$ WC "d_void_closedir='define'"
$ WC "d_volatile='define'"
$ WC "d_vprintf='define'"
+$ WC "d_vsnprintf='" + d_vsnprintf + "'"
$ WC "d_wait4='" + d_wait4 + "'"
$ WC "d_waitpid='define'"
$ WC "d_wcstombs='" + d_wcstombs + "'"
$ WC "i_time='define'"
$ WC "i_unistd='" + i_unistd + "'"
$ WC "i_ustat='undef'"
-$ WC "i_utime='undef'"
+$ WC "i_utime='" + i_utime + "'"
$ WC "i_values='undef'"
$ WC "i_varargs='undef'"
$ WC "i_vfork='undef'"
$ WC "lseektype='int'"
$ ENDIF
$ WC "mab='" + "'"
+$ WC "mad='undef'"
$ WC "make='" + make + "'"
$ WC "malloctype='void *'"
$ WC "usemallocwrap='" + usemallocwrap + "'"
$ WC "shortsize='" + shortsize + "'"
$ WC "shrplib='define'"
$ WC "sig_name='" + sig_name + "'"
-$ tmp = "sig_name_init='" + sig_name_init + "'"
-$ WC/symbol tmp
-$ DELETE/SYMBOL tmp
+$ WC "sig_name_init='" + sig_name_init + "'"
$ WC "sig_num='" + sig_num + "'"
$ WC "sig_num_init='" + sig_num_init + "'"
$ WC "sig_count='" + sig_count + "'"
$ WC "usefaststdio='" + usefaststdio + "'"
$ WC "useieee='" + useieee + "'" ! VMS-specific
$ WC "useithreads='" + useithreads + "'"
+$ WC "usekernelthreads='" + usekernelthreads + "'" ! VMS-specific
$ WC "uselargefiles='" + uselargefiles + "'"
$ WC "uselongdouble='" + uselongdouble + "'"
$ WC "usemorebits='" + usemorebits + "'"
$ WC "usesitecustomize='" + usesitecustomize + "'"
$ WC "usesocks='undef'"
$ WC "usethreads='" + usethreads + "'"
+$ WC "usethreadupcalls='" + usethreadupcalls + "'" ! VMS-specific
$ 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 "d_setprotoent_r='undef'"
$ WC "d_setpwent_r='undef'"
$ WC "d_setservent_r='undef'"
+$ WC "d_snprintf='" + d_snprintf + "'"
$ WC "d_srand48_r='undef'"
$ WC "d_srandom_r='undef'"
$ WC "d_strerror_r='undef'"
$ ENDIF
$ IF uselargefiles .OR. uselargefiles .EQS. "define"
$ THEN
-$! Perl can not use _USE_STD_STAT at the moment
-$! IF d_symlink .or. d_symlink .eqs. "define"
-$! THEN
-$! LARGEFILE_REPLACE = "LARGEFILE=LARGEFILE=_USE_STD_STAT=1"
-$! ELSE
+$ IF usestdstat .or. usestdstat .eqs. "define"
+$ THEN
+$ LARGEFILE_REPLACE = "LARGEFILE=LARGEFILE=_USE_STD_STAT=1"
+$ ELSE
$ LARGEFILE_REPLACE = "LARGEFILE=LARGEFILE=_LARGEFILE=1"
-$! ENDIF
+$ ENDIF
$ ELSE
$ LARGEFILE_REPLACE = "LARGEFILE="
$ ENDIF
$ DEFINE/USER_MODE sys$output 'UUmakefile'
$ mcr []munchconfig 'config_sh' 'Makefile_SH' "''DECC_REPLACE'" "''DECCXX_REPLACE'" "''ARCH_TYPE'" "''GNUC_REPLACE'" -
"''SOCKET_REPLACE'" "''THREAD_REPLACE'" "''C_Compiler_Replace'" "''MALLOC_REPLACE'" -
-"''Thread_Live_Dangerously'" "PV=''version'" "FLAGS=FLAGS=''extra_flags'" "''LARGEFILE_REPLACE'"
+"''THREAD_UPCALLS'" "''THREAD_KERNEL'" "PV=''version'" "FLAGS=FLAGS=''extra_flags'" "''LARGEFILE_REPLACE'"
$! Clean up after ourselves
$ DELETE/NOLOG/NOCONFIRM []munchconfig.exe;
$!
$ pcsi_producer = f$trnlnm("PCSI_PRODUCER")
$ if pcsi_producer .eqs. ""
$ then
-$ prefix = prefix - "000000."
-$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN prefix = prefix - "]" + ".]"
$ WRITE CONFIG "$ define/translation=concealed ''vms_prefix' ''prefix'"
$ else
$ WRITE CONFIG "$ myproc = f$environment(""PROCEDURE"")"
$ WRITE CONFIG "$ define/translation=concealed ''vms_prefix' 'myroot_dev'['myroot_dir'.]"
$ WRITE CONFIG "$ endif"
$ endif
-$
-$ prefix = prefix - "000000."
-$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN prefix = prefix - "]" + ".]"
-$ WRITE CONFIG "$ define/translation=concealed ''vms_prefix' ''prefix'"
-
-
$ WRITE CONFIG "$ ext = "".exe"""
$ IF sharedperl
$ THEN
$ WRITE CONFIG "$ set command ''vms_prefix':[000000]''packageup'.CLD"
$ ENDIF
$ ENDIF ! perl_symbol
-$ WRITE CONFIG "$ define/nolog pod2text ''vms_prefix':[lib.pod]pod2text.com"
-$ WRITE CONFIG "$ define/nolog pod2html ''vms_prefix':[lib.pod]pod2html.com"
-$ WRITE CONFIG "$ define/nolog pod2man ''vms_prefix':[lib.pod]pod2man.com"
$!
$ IF (tzneedset)
$ THEN
$ WRITE CONFIG "$ h2xs == """ + perl_setup_perl + " ''vms_prefix':[utils]h2xs.com"""
$ WRITE CONFIG "$ instmodsh == """ + perl_setup_perl + " ''vms_prefix':[utils]instmodsh.com"""
$ WRITE CONFIG "$ libnetcfg == """ + perl_setup_perl + " ''vms_prefix':[utils]libnetcfg.com"""
-$ WRITE CONFIG "$ perlbug == """ + perl_setup_perl + " ''vms_prefix':[lib]perlbug.com"""
+$ WRITE CONFIG "$ perlbug == """ + perl_setup_perl + " ''vms_prefix':[utils]perlbug.com"""
$ WRITE CONFIG "$!perlcc == """ + perl_setup_perl + " ''vms_prefix':[utils]perlcc.com"""
-$ WRITE CONFIG "$ perldoc == """ + perl_setup_perl + " ''vms_prefix':[lib.pod]perldoc.com -t"""
+$ WRITE CONFIG "$ perldoc == """ + perl_setup_perl + " ''vms_prefix':[utils]perldoc.com """"-t"""""""
$ WRITE CONFIG "$ perlivp == """ + perl_setup_perl + " ''vms_prefix':[utils]perlivp.com"""
$ WRITE CONFIG "$ piconv == """ + perl_setup_perl + " ''vms_prefix':[utils]piconv.com"""
$ WRITE CONFIG "$ pl2pm == """ + perl_setup_perl + " ''vms_prefix':[utils]pl2pm.com"""
-$ WRITE CONFIG "$ pod2html == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2html"""
-$ WRITE CONFIG "$ pod2latex == """ + perl_setup_perl + " ''vms_prefix':[lib.pod]pod2latex.com"""
-$ WRITE CONFIG "$ pod2text == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2text"""
-$ WRITE CONFIG "$!pod2man == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2man"""
+$ WRITE CONFIG "$ pod2html == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2html.com"""
+$ WRITE CONFIG "$ pod2latex == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2latex.com"""
+$ WRITE CONFIG "$ pod2text == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2text.com"""
+$ WRITE CONFIG "$!pod2man == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2man.com"""
$ WRITE CONFIG "$ pod2usage == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2usage.com"""
$ WRITE CONFIG "$ podchecker == """ + perl_setup_perl + " ''vms_prefix':[utils]podchecker.com"""
$ WRITE CONFIG "$ podselect == """ + perl_setup_perl + " ''vms_prefix':[utils]podselect.com"""