$ IF use_vmsdebug_perl
$ THEN
$ usevmsdebug = "define"
-$ macros = macros + """__DEBUG__=1"","
$ ELSE
$ usevmsdebug = "undef"
$ ENDIF
$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
$ THEN
$ echo ""
-$ echo "Perl can be built to take advantage of threads on some systems."
+$ echo "Perl can be built to offer a form of threading support 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 "and uses slightly more memory than plain Perl."
$ echo ""
$ bool_dflt = "n"
$ if f$type(usethreads) .nes. ""
$ then
$ if usethreads .or. usethreads .eqs. "define" then bool_dflt="y"
$ endif
-$! Catch cases where user specified ithreads or 5005threads but
+$! Catch cases where user specified ithreads 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
$ THEN
$ usethreads = "define"
$ use_threads="T"
-$ ! 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 = "y"
$ if f$type(useithreads) .nes. ""
$ then
$ endif
$ if f$type(use5005threads) .nes. ""
$ then
-$ if use5005threads .or. use5005threads .eqs. "define" then bool_dflt="n"
+$ if use5005threads .or. use5005threads .eqs. "define"
+$ then
+$ echo "5.005 threads are no longer supported"
+$ exit 44
+$ endif
$ endif
$ rp = "Use the newer interpreter-based ithreads? [''bool_dflt'] "
$ GOSUB myread
$ use_ithreads=ans
-$ if use_ithreads
-$ THEN
-$ use_5005_threads="N"
-$ ELSE
-$ use_5005_threads="Y"
-$ ENDIF
+$ use_5005_threads="N"
$ ! Are they on VMS 7.1 or greater?
$ IF "''f$extract(1,3, f$getsyi(""version""))'" .GES. "7.1"
$ THEN
$ if ans.eqs."PACK_MALLOC" then use_pack_malloc = "Y"
$ ENDIF
$!
-$ known_extensions = ""
+$ xs_extensions = ""
$ xxx = ""
$ OPEN/READ CONFIG 'manifestfound'
$ext_loop:
$
$ end_replace_dash_with_slash:
$
-$ xxx = known_extensions
+$ xxx = xs_extensions
$ gosub may_already_have_extension
$ IF $STATUS .EQ. 1
$ THEN
$ ENDIF
$!
$ found_new_extension:
-$ 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. ""
+$ 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. "" -
+ .AND. extension_dir_name .NES. "VMS-Filespec"
$ THEN
$! Bit if a hack to get around the 1K buffer on older systems.
$ IF F$LENGTH(nonxs_ext) .GT. 950
$ nonxs_ext = nonxs_ext + " ''extspec'"
$ ENDIF
$ ELSE
-$ known_extensions = known_extensions + " ''extspec'"
+$ xs_extensions = xs_extensions + " ''extspec'"
$ ENDIF
$ goto ext_loop
$end_ext:
$ DELETE/SYMBOL extspec
$ DELETE/SYMBOL extlen
$ DELETE/SYMBOL extension_dir_name
-$ known_extensions = F$EDIT(known_extensions,"TRIM,COMPRESS")
-$ dflt = known_extensions
+$ xs_extensions = F$EDIT(xs_extensions,"TRIM,COMPRESS")
+$ dflt = xs_extensions
$ IF ccname .NES. "DEC" .AND. ccname .NES. "CXX"
$ THEN
$ dflt = dflt - "POSIX" ! not with VAX C or GCC
$!
$! Now some that we build up
$!
+$ use5005threads = "undef"
+$ d_old_pthread_create_joinable = "undef"
+$ old_pthread_create_joinable = " "
$ IF use_threads
$ THEN
-$ IF use_5005_threads
-$ THEN
-$ d_old_pthread_create_joinable = "undef"
-$ old_pthread_create_joinable = " "
-$ use5005threads = "define"
-$ useithreads = "undef"
-$ ELSE
-$ d_old_pthread_create_joinable = "undef"
-$ old_pthread_create_joinable = " "
-$ use5005threads = "undef"
-$ useithreads = "define"
-$ ENDIF
+$ useithreads = "define"
$ ELSE
-$ d_old_pthread_create_joinable = "undef"
-$ old_pthread_create_joinable = " "
-$ use5005threads = "undef"
$ useithreads = "undef"
$ ENDIF
$!
$! ENDIF
$! ENDIF
$!
+$!
+$! Check for the shm* routines.
+$!
+$ OS
+$ WS "#if defined(__DECC) || defined(__DECCXX)"
+$ WS "#include <stdlib.h>"
+$ WS "#endif"
+$ WS "#include <stdio.h>"
+$ WS "#include <sys/shm.h>"
+$ WS "#include <sys/stat.h>"
+$ WS "int shmget(key_t key, size_t size, int shmflg);"
+$ WS "void* shmat(int shmid,const void *shmaddr,int shmflg);"
+$ WS "int shmctl(int shmid, int cmd, struct shmid_ds *buf);"
+$ WS "int shmdt(const void *shmaddr);"
+$ WS "int main() {"
+$ WS "int shm_id = shmget(IPC_PRIVATE, 8, S_IRWXU);"
+$ WS "if (shm_id == -1) printf(""0\n""); else printf (""1\n"");"
+$ WS "}"
+$ CS
+$ GOSUB compile
+$ IF tmp .EQS. "1"
+$ THEN
+$ d_shm = "define"
+$ d_shmat = "define"
+$ d_shmatprototype = "define"
+$ d_shmctl = "define"
+$ d_shmdt = "define"
+$ d_shmget = "define"
+$ shmattype = "void *"
+$ ELSE
+$ d_shm = "undef"
+$ d_shmat = "undef"
+$ d_shmatprototype = "undef"
+$ d_shmctl = "undef"
+$ d_shmdt = "undef"
+$ d_shmget = "undef"
+$ shmattype = "undef"
+$ ENDIF
+$!
$! Check for setenv
$!
$ OS
$! We know that it is only available for 8.2 and later on 64 bit platforms.
$!
$ d_fstatvfs = "undef"
-$! d_statvfs = "undef"
+$ d_statvfs = "undef"
$ i_sysstatvfs = "undef"
$ if (vms_ver .GES. "8.2") .AND. (F$ELEMENT(0, "-", archname) .NES. "VMS_VAX")
$ then
$ echo "Found 64 bit OpenVMS ''vms_ver' -- will build with 8.2 routines"
$ d_fstatvfs = "define"
-$! d_statvfs = "define"
+$ d_statvfs = "define"
$ i_sysstatvfs = "define"
$ endif
$!
$ WC "baserev='" + baserev + "'"
$ WC "bin='" + bin + "'"
$ WC "binexp='" + binexp + "'"
+$ WC "bootstrap_charset='undef'"
$ WC "builddir='" + builddir + "'"
$ WC "byteorder='1234'"
$ WC "castflags='0'"
$ WC "d_bcmp='" + d_bcmp + "'"
$ WC "d_bcopy='" + d_bcopy + "'"
$ WC "d_bincompat3='undef'"
-$! WC "d_bsdpgrp='undef'"
+$ WC "d_bsd='undef'"
$ WC "d_bsdgetpgrp='undef'"
$ WC "d_bsdsetpgrp='undef'"
$ WC "d_builtin_choose_expr='undef'" ! GCC only
$ WC "d_chroot='undef'"
$ WC "d_chsize='undef'"
$ WC "d_class='undef'"
+$ WC "d_closedir='define'"
$ WC "d_cmsghdr_s='undef'"
$ WC "d_const='define'"
$ WC "d_copysignl='define'"
$ WC "d_dir_dd_fd='undef'"
$ WC "d_dirfd='undef'"
$ WC "d_dirnamlen='define'"
-$ WC "d_dlerror='undef'"
+$ IF ("''F$EXTRACT(1,3, F$GETSYI(""VERSION""))'".GES."7.2")
+$ THEN
+$ WC "d_dlerror='define'"
+$ WC "d_dlopen='define'"
+$ ELSE
+$ WC "d_dlerror='undef'"
+$ WC "d_dlopen='undef'"
+$ ENDIF
$ WC "d_dlsymun='undef'"
$ WC "d_dosuid='undef'"
$ WC "d_drand48proto='" + d_drand48proto + "'"
$ WC "d_fcntl='" + d_fcntl + "'"
$ WC "d_fcntl_can_lock='" + d_fcntl_can_lock + "'"
$ WC "d_fd_set='" + d_fd_set + "'"
+$ WC "d_fd_macros='define'"
+$ WC "d_fds_bits='define'"
$ WC "d_fgetpos='define'"
$ WC "d_finite='undef'"
$ WC "d_finitel='undef'"
$ WC "d_fstatvfs='" + d_fstatvfs + "'"
$ WC "d_fsync='undef'"
$ WC "d_ftello='" + d_ftello + "'"
+$ WC "d_ftime='define'"
$ WC "d_futimes='undef'"
$ WC "d_gdbmndbm_h_uses_prototypes='undef'"
$ WC "d_gdbm_ndbm_h_uses_prototypes='undef'"
$ WC "d_modfl_pow32_bug='undef'"
$ WC "d_mprotect='" + d_mprotect + "'"
$ WC "d_msg='undef'"
+$ WC "d_msgctl='undef'"
+$ WC "d_msgget='undef'"
+$ WC "d_msgrcv='undef'"
+$ WC "d_msgsnd='undef'"
$ WC "d_msg_ctrunc='undef'"
$ WC "d_msg_dontroute='undef'"
$ WC "d_msg_oob='undef'"
$ WC "d_munmap='" + d_munmap + "'"
$ WC "d_mymalloc='" + d_mymalloc + "'"
$ WC "d_nanosleep='" + d_nanosleep + "'"
+$ WC "d_ndbm='undef'"
$ WC "d_ndbm_h_uses_prototypes='undef'"
$ WC "d_nice='define'"
$ WC "d_nl_langinfo='" + d_nl_langinfo + "'"
$ WC "d_old_pthread_create_joinable='" + d_old_pthread_create_joinable + "'"
$ WC "d_oldarchlib='define'"
$ WC "d_oldpthreads='" + d_oldpthreads + "'"
+$ WC "d_oldsock='undef'"
$ WC "d_open3='define'"
$ WC "d_pathconf='" + d_pathconf + "'"
$ WC "d_pause='define'"
$ WC "d_phostname='" + d_phostname + "'"
$ WC "d_pipe='define'"
$ WC "d_poll='" + d_poll + "'"
+$ WC "d_portable='define'"
$ WC "d_procselfexe='undef'"
$ WC "d_pseudofork='undef'"
$ WC "d_pthread_atfork='undef'"
$ IF ("''F$EXTRACT(1,3, F$GETSYI(""VERSION""))'".GES."8.4")
$ THEN
$ WC "d_sem='define'"
+$ WC "d_semctl='define'"
$ WC "d_semctl_semid_ds='define'"
$ WC "d_semctl_semun='define'"
$ WC "d_semget='define'"
$ WC "d_semop='define'"
$ ELSE
$ WC "d_sem='undef'"
+$ WC "d_semctl='undef'"
$ WC "d_semctl_semid_ds='undef'"
$ WC "d_semctl_semun='undef'"
$ WC "d_semget='undef'"
$ WC "d_setsid='" + d_setsid + "'"
$ WC "d_setvbuf='" + d_setvbuf + "'"
$ WC "d_sfio='undef'"
-$ WC "d_shm='undef'"
-$ WC "d_shmatprototype='undef'"
+$ WC "d_shm='" + d_shm + "'"
+$ WC "d_shmat='" + d_shmat + "'"
+$ WC "d_shmatprototype='" + d_shmatprototype + "'"
+$ WC "d_shmctl='" + d_shmctl + "'"
+$ WC "d_shmdt='" + d_shmdt + "'"
+$ WC "d_shmget='" + d_shmget + "'"
$ WC "d_sigaction='" + d_sigaction + "'"
$ WC "d_signbit='" + d_signbit + "'"
$ WC "d_sigprocmask='" + d_sigprocmask + "'"
$ WC "d_stdiobase='" + d_stdiobase + "'"
$ WC "d_stdstdio='" + d_stdstdio + "'"
$ WC "d_faststdio='" + d_faststdio + "'"
+$ WC "d_statvfs='" + d_statvfs + "'"
$ WC "d_strchr='define'"
$ WC "d_strcoll='" + d_strcoll + "'"
$ WC "d_strctcpy='define'"
$ WC "d_syscall='undef'"
$ WC "d_syscallproto='undef'"
$ WC "d_sysconf='" + d_sysconf + "'"
+$ WC "d_sysernlst='undef'"
$ WC "d_syserrlst='undef'"
$ WC "d_system='define'"
$ WC "d_tcgetpgrp='undef'"
$ WC "d_usleepproto='" + d_usleep + "'"
$ WC "d_ustat='undef'"
$ WC "d_vendorarch='undef'"
+$ WC "d_vendorbin='undef'"
$ WC "d_vendorlib='undef'"
+$ WC "d_vendorscript='undef'"
$ WC "d_vfork='define'"
$ WC "d_vms_case_sensitive_symbols='" + d_vms_be_case_sensitive + "'" ! VMS
$ WC "d_vms_do_sockets='" + d_vms_do_sockets + "'" ! VMS
$ WC "d_vms_shorten_long_symbols='" + d_vms_shorten_long_symbols + "'" ! VMS
$ WC "d_void_closedir='define'"
+$ WC "d_voidsig='undef'"
+$ WC "d_voidtty='" + "'"
$ WC "d_volatile='define'"
$ WC "d_vprintf='define'"
$ WC "d_vsnprintf='" + d_vsnprintf + "'"
$ WC "d_wcstombs='" + d_wcstombs + "'"
$ WC "d_wctomb='" + d_wctomb + "'"
$ WC "d_writev='undef'"
+$ WC "d_xenix='undef'"
$ WC "db_hashtype=' '"
$ WC "db_prefixtype=' '"
$ WC "db_version_major='" + "'"
$ WC "gidsize='4'"
$ WC "gidtype='" + gidtype + "'"
$ WC "groupstype='Gid_t'"
+$ WC "h_fcntl='false'"
+$ WC "h_sysfile='false'"
$ WC "hint='none'"
$ WC "hintfile='" + "'"
$ WC "i16size='" + i16size + "'"
$ WC "i8type='" + i8type + "'"
$ WC "i_arpainet='undef'"
$ WC "i_assert='define'"
+$ WC "i_bsdioctl='undef'"
$ WC "i_crypt='undef'"
$ WC "i_db='undef'"
$ WC "i_dbm='undef'"
$ WC "i_dirent='undef'" ! we roll our own
+$ WC "i_dld='undef'"
$ WC "i_dlfcn='undef'"
$ WC "i_fcntl='" + i_fcntl + "'"
$ WC "i_float='define'"
$ WC "i_locale='" + i_locale + "'"
$ WC "i_machcthr='undef'"
$ WC "i_machcthreads='undef'"
+$ WC "i_malloc='undef'"
$ WC "i_mallocmalloc='undef'"
$ WC "i_math='define'"
$ WC "i_memory='undef'"
$ WC "i_sysaccess='" + i_sysaccess + "'"
$ WC "i_sysdir='undef'"
$ WC "i_sysfile='" + i_sysfile + "'"
+$ WC "i_sysfilio='undef'"
+$ WC "i_sysin='undef'"
$ WC "i_sysioctl='" + i_sysioctl + "'"
$ WC "i_syslog='" + i_syslog + "'"
$ WC "i_sysmman='undef'"
$ WC "i_utime='" + i_utime + "'"
$ WC "i_values='undef'"
$ WC "i_varargs='undef'"
+$ WC "i_varhdr='stdarg.h'"
$ WC "i_vfork='undef'"
$ WC "inc_version_list='0'"
$ WC "inc_version_list_init='0'"
$ WC "ivsize='" + ivsize + "'"
$ WC "ivtype='" + ivtype + "'"
$!
-$! The known_extensions symbol may be quite long
+$! The xs_extensions symbol may be quite long
$!
-$ tmp = "known_extensions='" + known_extensions + "'"
-$ WC/symbol tmp
-$ DELETE/SYMBOL tmp
+$ WC/symbol "known_extensions='", xs_extensions, " ", nonxs_ext, " ", nonxs_ext2, "'"
$ WC "ld='" + ld + "'"
+$ WC "ld_can_script='undef'"
$ WC "lddlflags='/Share'"
$ WC "ldflags='" + ldflags + "'"
$ WC "ldflags_uselargefiles='" + "'"
+$ WC "ldlibpthname='" + "'"
$ WC "lib_ext='" + lib_ext + "'"
$ WC "libc='" + libc + "'"
$ WC "libpth='/sys$share /sys$library'"
$ WC "selecttype='" + selecttype + "'"
$ WC "sh='MCR'"
$ WC "sharpbang='#!'"
-$ WC "shmattype='" + " '"
+$ WC "shmattype='" + shmattype + "'"
$ WC "shortsize='" + shortsize + "'"
$ IF (f$length(sig_name) .GE. 244)
$ THEN
$ ELSE
$ LARGEFILE_REPLACE = "LARGEFILE="
$ ENDIF
+$ IF use_vmsdebug_perl
+$ THEN
+$ DEBUG_REPLACE = "USEVMSDEBUG=__DEBUG__=1"
+$ ELSE
+$ DEBUG_REPLACE = "USEVMSDEBUG="
+$ ENDIF
$!
$! In order not to stress the tiny command buffer on pre-7.3-2 systems,
$! we put the following substitutions in a file and pass the file to
$ WC "FLAGS=FLAGS=''extra_flags'"
$ WC "''LARGEFILE_REPLACE'"
$ WC "ARCHNAME=ARCHNAME=''archname'"
+$ WC "''DEBUG_REPLACE'"
$ close CONFIG
$!
$ echo4 "Extracting ''defmakefile' (with variable substitutions)"
$ WRITE CONFIG "$ config_data== """ + perl_setup_perl + " ''vms_prefix':[utils]config_data.com"""
$ WRITE CONFIG "$ corelist == """ + perl_setup_perl + " ''vms_prefix':[utils]corelist.com"""
$ WRITE CONFIG "$ cpan == """ + perl_setup_perl + " ''vms_prefix':[utils]cpan.com"""
-$ WRITE CONFIG "$ cpan2dist == """ + perl_setup_perl + " ''vms_prefix':[utils]cpan2dist.com"""
-$! FIXME: "-" is an operator and illegal in a symbol name -- cpanp-run-perl can't work
-$!$ WRITE CONFIG "$ cpanp-run-perl == """ + perl_setup_perl + " ''vms_prefix':[utils]cpanp-run-perl.com"""
-$ WRITE CONFIG "$ cpanp == """ + perl_setup_perl + " ''vms_prefix':[utils]cpanp.com"""
$ WRITE CONFIG "$ enc2xs == """ + perl_setup_perl + " ''vms_prefix':[utils]enc2xs.com"""
$ WRITE CONFIG "$ find2perl == """ + perl_setup_perl + " ''vms_prefix':[utils]find2perl.com"""
$ WRITE CONFIG "$ h2ph == """ + perl_setup_perl + " ''vms_prefix':[utils]h2ph.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.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"""