$ use_vmsdebug_perl = "n"
$ use64bitall = "n"
$ use64bitint = "n"
+$ uselongdouble = "n"
$ uselargefiles = "n"
+$ usestdstat = "n"
+$ usedecterm = "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
$!
$! 17-DEC-1999 Improved to turn "[.foo.bar]baz.c_buz" into
$! "[.foo.bar]baz_c.buz" to cover unzipped archives and put
$! "[.foo.bar]baz.c_buz,baz_c.buz" into missing list if neither is found.
-$ basename[f$locate(".",basename),1] := _
-$ dot_ele = F$ELEMENT(dots - 1,"_",basename)
+$ dotloc = f$locate(".",basename)
+$ basename[dotloc,1] := "_"
+$ dot_ele = F$ELEMENT(dots - 1,"_",f$extract(dotloc,f$length(basename),basename))
$ basename = -
f$extract(0,f$length(basename)-(f$length(dot_ele)+1),basename) -
+ "." + dot_ele
$ 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|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_symbols3 ="|usecasesensitive|usedefaulttypes|usedevel|useieee|useithreads|uselongdouble|usemultiplicity|usemymalloc|usedebugging_perl|"
+$ config_symbols4 ="|useperlio|usesecurelog|usethreads|usevmsdebug|usefaststdio|usemallocwrap|unlink_all_versions|uselargefiles|usesitecustomize|"
+$ config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthreads|usedecterm"
$!
$ 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
$ echo "You are using CXX ''line'"
$ cxxversion = line
$ ccversion = line
+$ d_cplusplus = "define"
$ CALL Cxx_demangler_cleanup
+$ ELSE
+$ d_cplusplus = "undef"
$ ENDIF
$!
$Cxx_demangler_cleanup: SUBROUTINE
$!: What should the include directory be ? (.TLB text libraries)
$ dflt = gcclib_olb
$ rp = "Where are the include files you want to use? "
-$ IF f$length( rp + "[''dflt'] " ).gt.76
+$ IF f$length( rp + "[''dflt'] " ) .GT. 76
$ THEN rp = F$FAO("!AS!/!AS",rp,"[''dflt'] ")
$ ELSE rp = rp + "[''dflt'] "
$ ENDIF
$ echo ""
$ echo "Since you have chosen a maximally 64-bit build, I'm also turning on"
$ echo "the use of 64-bit integers."
-$ echo "I am also setting the default to use large files if available."
$ use64bitint="Y"
$ ENDIF
$!
$ GOSUB myread
$ uselargefiles=ans
$!
+$ bool_dflt = "n"
+$ IF F$TYPE(uselongdouble) .NES. ""
+$ THEN
+$ IF uselongdouble .OR. uselongdouble .eqs. "define" THEN bool_dflt = "y"
+$ ENDIF
+$ echo ""
+$ echo "Perl can be built to take advantage of long doubles which"
+$ echo "(if available) may give more accuracy and range for floating point numbers."
+$ echo ""
+$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
+$ rp = "Try to use long doubles, if available? [''bool_dflt'] "
+$ GOSUB myread
+$ uselongdouble = ans
+$!
$ ENDIF ! not VAX && >= 7.1
$!
$ IF usesitecustomize .OR. usesitecustomize .eqs. "define"
$ 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
$ 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?
$ ELSE
$ d_unlink_all_versions = "undef"
$ ENDIF
+$!
+$! To avoid 'SYSTEM-F-PROTINSTALL, protected images must be installed'
+$! at run time, we must check that the DECterm image is both present
+$! and installed as a known image.
+$!
+$ decterm_capable = "FALSE"
+$ dflt = "SYS$SHARE:DECW$TERMINALSHR12.EXE"
+$ IF F$SEARCH(dflt) .NES. ""
+$ THEN
+$ decterm_capable = F$FILE_ATTRIBUTES(dflt, "KNOWN")
+$ ELSE
+$ dflt = "SYS$SHARE:DECW$TERMINALSHR.EXE"
+$ IF F$SEARCH(dflt) .NES. "" THEN decterm_capable = F$FILE_ATTRIBUTES(dflt, "KNOWN")
+$ ENDIF
+$!
+$ IF F$TYPE(usedecterm) .NES. ""
+$ THEN
+$ if usedecterm .or. usedecterm .eqs. "define"
+$ then
+$ bool_dflt="y"
+$ else
+$ bool_dflt="n"
+$ endif
+$ ELSE
+$ bool_dflt="n"
+$ ENDIF
+$ IF .NOT. use_debugging_perl THEN bool_dflt = "n"
+$ echo ""
+$ echo "Perl can be built to support DECterms from the Perl debugger"
+$ echo ""
+$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
+$ rp = "Build with DECterm Perl debugger support, if available? [''bool_dflt'] "
+$ GOSUB myread
+$ usedecterm=ans
+$ IF (usedecterm .OR. usedecterm .EQS. "define") .AND. .NOT. decterm_capable
+$ THEN
+$ echo4 "No installed DECterm image found, disabling..."
+$ usedecterm = "n"
+$ ENDIF
$! CC Flags
$ echo ""
$ echo "Your compiler may want other flags. For this question you should include"
$ THEN
$ dflt = dflt - "Socket" ! optional on VMS
$ ENDIF
-$ IF .NOT. use_threads THEN dflt = dflt - "Thread"
+$ ! Build this one only for threads without ithreads
+$ IF F$TYPE(useithreads) .EQS. "" .OR. .NOT. use_threads
+$ THEN
+$ dflt = dflt - "Thread"
+$ ELSE
+$ IF useithreads .OR. useithreads .EQS. "define" THEN dflt = dflt - "Thread"
+$ ENDIF
+$ dflt = dflt - "Win32API/File" - "Win32CORE" - "Win32" ! need Dave Cutler's other project
$ dflt = F$EDIT(dflt,"TRIM,COMPRESS")
$!
$! Ask for their default list of extensions to build
$ ccdlflags=""
$ cccdlflags=""
$!
+$! FIXME -- This section does not really handle all the different permutations
+$! of 64-bitness, and it does not provide for the /POINTER_SIZE=64 compiler
+$! option that would be necessary to support the "explicit 64-bit interfaces"
+$! promised by -Dusemorebits.
+$!
+$ usemorebits = "undef"
$ IF use64bitint .OR. use64bitint .EQS. "define"
$ THEN
$ use64bitint = "define"
-$ uselongdouble = "define"
-$ alignbytes="16"
-$ usemorebits = "define"
$ ivdformat="""Ld"""
$ uvuformat="""Lu"""
$ uvoformat="""Lo"""
$ uvXUformat="""LX"""
$ ELSE
$ use64bitint = "undef"
-$ uselongdouble = "undef"
-$ usemorebits = "undef"
$ ivdformat="""ld"""
$ uvuformat="""lu"""
$ uvoformat="""lo"""
$ ENDIF
$ IF uselongdouble .OR. uselongdouble .EQS. "define"
$ THEN
+$ uselongdouble = "define"
+$ alignbytes="16"
$ nveformat="""Le"""
$ nvfformat="""Lf"""
$ nvgformat="""Lg"""
$ ELSE
+$ uselongdouble = "undef"
$ nveformat="""e"""
$ nvfformat="""f"""
$ nvgformat="""g"""
$ quadtype = "long long"
$ uquadtype = "unsigned long long"
$ quadkind = "QUAD_IS_LONG_LONG"
-$ d_frexpl = "define"
-$ d_isnan = "define"
-$ d_isnanl = "define"
-$ d_modfl = "define"
-$ d_modflproto = "define"
$ ELSE
$ d_PRId64 = "undef"
$ d_PRIXU64 = "undef"
$ quadtype = "long"
$ uquadtype = "unsigned long"
$ quadkind = "QUAD_IS_LONG"
+$ ENDIF
+$!
+$ IF archname .NES. "VMS_VAX"
+$ THEN
+$ d_frexpl = "define"
+$ d_modfl = "define"
+$ d_modflproto = "define"
+$ ELSE
$ d_frexpl = "undef"
-$ d_isnan = "undef"
-$ d_isnanl = "undef"
$ d_modfl = "undef"
$ d_modflproto = "undef"
$ ENDIF
$!
+$ IF useieee .OR. useieee .EQS. "define"
+$ THEN
+$ d_isnan = "define"
+$ d_isnanl = "define"
+$ ELSE
+$ d_isnan = "undef"
+$ d_isnanl = "undef"
+$ ENDIF
+$!
$! Now some that we build up
$!
$ IF use_threads
$ 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_wait4="define"
$ d_index="define"
$ pidtype="pid_t"
-$ sig_name1="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM "
-$ sig_name2="TERM ABRT USR1 USR2 SPARE18 SPARE19 CHLD CONT STOP TSTP TTIN TTOU "
-$ sig_name3="DEBUG SPARE27 SPARE28 SPARE29 SPARE30 SPARE31 SPARE32 "
-$ sig_name4="WINCH "
-$ sig_namert="RTMIN RTMAX"
-$ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT"",""FPE"",""KILL"",""BUS"",""SEGV"",""SYS"","
-$ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",""USR1"",""USR2"",""SPARE18"",""SPARE19"",""CHLD"",""CONT"",""STOP"",""TSTP"","
-$ psnwc3="""TTIN"",""TTOU"",""DEBUG"",""SPARE27"",""SPARE28"",""SPARE29"",""SPARE30"",""SPARE31"",""SPARE32"","
-$ psnwc4_v7_3="""WINCH"","
-$ psnwcrt="""RTMIN"",""RTMAX"",0"
-$ sig_num1="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 "
-$ sig_num_v7_3="28 "
-$ sig_numrt="33 64"
-$ sig_num_init1="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,"
-$ sig_num_init_v7_3="28,"
-$ sig_num_initrt="33,64,0"
-$ if (vms_ver .GES. "7.3")
-$ then
-$ sig_name = sig_name1 + sig_name2 + sig_name3 + sig_name4 + sig_namert
-$ sig_name_init = psnwc1 + psnwc2 + psnwc3 + psnwc4_v7_3 + psnwcrt
-$ sig_num = sig_num1 + sig_num_v7_3 + sig_numrt
-$ sig_num_init = sig_num_init1 + sig_num_v7_3 + sig_num_initrt
-$ sig_size="37"
-$ else
-$ sig_name = sig_name1 + sig_name2 + sig_name3 + sig_namert
-$ sig_name_init = psnwc1 + psnwc2 + psnwc3 + psnwcrt
-$ sig_num = sig_num1 + sig_numrt
-$ sig_num_init = sig_num_init1 + sig_num_initrt
-$ sig_size="36"
-$ endif
-$ sig_count="64"
+$ sig_name1="ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE"
+$ sig_name2=" ALRM TERM USR1 USR2 NUM18 NUM19 CHLD CONT STOP TSTP TTIN TTOU DEBUG"
+$ IF (vms_ver .GES. "7.3")
+$ THEN
+$ sig_name2 = sig_name2 + " NUM27 WINCH"
+$ ENDIF
+$!* signal.h defines SIGRTMIN as 33 and SIGRTMAX as 64, but there is no
+$!* sigqueue function or other apparent means to do realtime signalling,
+$!* so let's not try to include the realtime range for now.
+$!* sig_name3=" NUM29 NUM30 NUM31 NUM32 RTMIN NUM34 NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43"
+$!* sig_name4=" NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58"
+$!* sig_name5=" NUM59 NUM60 NUM61 NUMT62 NUM63 RTMAX"
+$ sig_name = sig_name1 + sig_name2
+$ sig_num = ""
+$ sig_num_init = ""
+$ sig_name_init = ""
+$ sig_index = 0
+$!
+$ PARSE_SIG_NAME_LOOP:
+$!
+$ tmp = F$ELEMENT(sig_index, " ", sig_name)
+$ IF F$LENGTH(F$EDIT(tmp,"TRIM")) .eq. 0 THEN GOTO END_SIG_NAME_LOOP
+$ sig_name_init = sig_name_init + """''tmp'"","
+$ sig_num = sig_num + "''sig_index' "
+$ sig_num_init = sig_num_init + "''sig_index',"
+$ sig_index = sig_index + 1
+$ GOTO PARSE_SIG_NAME_LOOP
+$!
+$ END_SIG_NAME_LOOP:
+$!
+$ sig_name_init = sig_name_init + "0"
+$ sig_num_init = sig_num_init + "0"
+$ sig_size = "''sig_index'"
+$ sig_index = sig_index - 1
+$ sig_count = "''sig_index'"
$ uidtype="uid_t"
$ d_pathconf="define"
$ d_fpathconf="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"
$ THEN
$ ivtype = "''i64type'"
$ uvtype = "''u64type'"
-$ nvtype="long double"
$ ELSE
$ i64size="undef"
$ u64size="undef"
$ ENDIF
$!
+$ IF uselongdouble .OR. uselongdouble .EQS. "define"
+$ THEN
+$ nvtype="long double"
+$ ENDIF
+$!
$ tmp = "''ivtype'"
$ GOSUB type_size_check
$ ivsize = tmp
$ nv_preserves_uv_bits = tmp
$ ENDIF
$!
+$! Check for signbit (must already know nvtype)
+$!
+$ echo4 "Checking to see if you have signbit() available to work on ''nvtype'..."
+$ OS
+$ WS "#if defined(__DECC) || defined(__DECCXX)"
+$ WS "#include <stdlib.h>"
+$ WS "#endif"
+$ WS "#include <fp.h>"
+$ WS "#include <stdio.h>"
+$ WS "int main()"
+$ WS "{"
+$ WS " ''nvtype' x = 0.0;"
+$ WS " ''nvtype' y = -0.0;"
+$ WS " if ((signbit(x) == 0) && (signbit(y) != 0))"
+$ WS " printf(""1\n"");"
+$ WS " else"
+$ WS " printf(""0\n"");"
+$ WS "}"
+$ CS
+$ GOSUB compile
+$ IF tmp .EQS. "1"
+$ THEN
+$ d_signbit = "define"
+$ echo4 "Yes."
+$ ELSE
+$ d_signbit = "undef"
+$ echo4 "Nope."
+$ ENDIF
+$!
$ echo4 "Checking if kill() uses SYS$FORCEX or can't be called from a signal handler..."
$ kill_by_sigprc = "undef"
$ OS
$ echo4 "Yep, we can."
$ kill_by_sigprc = "define"
$!
-$! since SIGBUS and SIGSEGV indistinguishable, make them the same here.
-$! sigusr1 and sigusr2 show up in VMS6.2 and later
+$! Use the same list of signals the CRTL does for recent systems, but cook our own for very old systems.
+$! Note that the list controls what signals can be caught by name as well as what can be raised via kill().
$!
-$ if vms_ver .GES. "6.2"
-$ then
-$ sig_name="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ABRT USR1 USR2"
-$ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT"",""FPE"",""KILL"",""BUS"",""SEGV"",""SYS"","
-$ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",""USR1"",""USR2"",0"
-$ sig_name_init = psnwc1 + psnwc2
-$ sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17"
-$ sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,0"
-$ sig_size="19"
-$ sig_count="17"
-$ else
+$ if vms_ver .LTS. "6.2"
+$ then
+$! since SIGBUS and SIGSEGV indistinguishable, make them the same here.
$ sig_name="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ABRT"
$ psnwc1="""ZERO"",""HUP"",""INT"",""QUIT"",""ILL"",""TRAP"",""IOT"",""EMT"",""FPE"",""KILL"",""BUS"",""SEGV"",""SYS"","
$ psnwc2="""PIPE"",""ALRM"",""TERM"",""ABRT"",0"
$ 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_attribute_pure='undef'"
$ WC "d_attribute_unused='undef'"
$ WC "d_attribute_warn_unused_result='undef'"
+$ WC "d_printf_format_null='undef'"
$ WC "d_bcmp='" + d_bcmp + "'"
$ WC "d_bcopy='" + d_bcopy + "'"
$ WC "d_bincompat3='undef'"
$! 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_cmsghdr_s='undef'"
$ WC "d_const='define'"
$ WC "d_copysignl='define'"
+$ WC "d_cplusplus='" + d_cplusplus + "'"
$ WC "d_crypt='define'"
$ WC "d_csh='undef'"
+$ WC "d_ctermid='define'"
$ WC "d_cuserid='define'"
+$ WC "d_c99_variadic_macros='undef'"
$ WC "d_dbl_dig='define'"
$ WC "d_dbminitproto='undef'"
$ WC "d_difftime='define'"
+$ WC "d_dir_dd_fd='undef'"
$ 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_pipe='define'"
$ WC "d_poll='" + d_poll + "'"
$ WC "d_procselfexe='undef'"
+$ WC "d_pseudofork='undef'"
$ WC "d_pthread_atfork='undef'"
$ WC "d_pthread_attr_setscope='" + d_pthread_attr_setscope + "'"
$ WC "d_pthread_yield='" + d_pthread_yield + "'"
$ WC "d_shm='undef'"
$ WC "d_shmatprototype='undef'"
$ WC "d_sigaction='" + d_sigaction + "'"
+$ WC "d_signbit='" + d_signbit + "'"
$ 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_float='define'"
$ WC "i_fp='undef'"
$ WC "i_fp_class='undef'"
+$ WC "i_gdbm='undef'"
$ WC "i_grp='" + i_grp + "'"
$ WC "i_ieeefp='undef'"
$ WC "i_inttypes='" + i_inttypes + "'"
$ 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 "shmattype='" + " '"
$ WC "shortsize='" + shortsize + "'"
$ WC "shrplib='define'"
-$ WC "sig_name='" + sig_name + "'"
-$ tmp = "sig_name_init='" + sig_name_init + "'"
-$ WC/symbol tmp
-$ DELETE/SYMBOL tmp
+$ IF (f$length(sig_name) .GE. 244)
+$ THEN
+$ tmp = "sig_name='" + sig_name + "'"
+$ WC/symbol tmp
+$ DELETE/SYMBOL tmp
+$ ELSE
+$ WC "sig_name='" + sig_name + "'"
+$ ENDIF
+$ IF (f$length(sig_name_init) .GE. 244)
+$ THEN
+$ tmp = "sig_name_init='" + sig_name_init + "'"
+$ WC/symbol tmp
+$ DELETE/SYMBOL tmp
+$ ELSE
+$ WC "sig_name_init='" + sig_name_init + "'"
+$ ENDIF
$ WC "sig_num='" + sig_num + "'"
$ WC "sig_num_init='" + sig_num_init + "'"
$ WC "sig_count='" + sig_count + "'"
$ WC "stdio_ptr='((*fp)->_ptr)'"
$ WC "stdio_stream_array=' " + "'"
$ WC "subversion='" + subversion + "'"
+$ WC "targetarch='" + "'"
$ WC "timetype='" + timetype + "'"
$ WC "u16size='" + u16size + "'"
$ WC "u16type='" + u16type + "'"
$ 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_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_localtime_r_needs_tzset='undef'"
$ WC "d_random_r='undef'"
$ WC "d_readdir_r='define'" ! always defined; we roll our own
$ WC "d_readdir64_r='undef'"
$ 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'"
$! WC "#define PERL_IGNORE_FPUSIG SIGFPE"
$ ENDIF
$ IF kill_by_sigprc .EQS. "define" then WC "#define KILL_BY_SIGPRC"
+$ IF usedecterm .OR. usedecterm .EQS. "define" then WC "#define USE_VMS_DECTERM"
$ IF unlink_all_versions .OR. unlink_all_versions .EQS. "define" THEN -
WC "#define UNLINK_ALL_VERSIONS"
$ CLOSE CONFIG
$ 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
+$ IF usedecterm .OR. usedecterm .EQS. "define"
+$ THEN
+$ IF F$SEARCH("SYS$SHARE:DECW$TERMINALSHR12.EXE") .nes. ""
+$ THEN
+$ DECTERM_REPLACE = "DECTERMLIB=DECTERMLIB=DECW$TERMINALSHR12/SHARE"
+$ ELSE
+$ DECTERM_REPLACE = "DECTERMLIB=DECTERMLIB=DECW$TERMINALSHR/SHARE"
+$ ENDIF
+$ ELSE
+$ DECTERM_REPLACE = "DECTERMLIB=DECTERMLIB="
+$ 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
+$! munchconfig.
+$!
+$ open/write CONFIG extra_subs.txt
+$ WC := write CONFIG
+$ WC "''DECC_REPLACE'"
+$ WC "''DECCXX_REPLACE'"
+$ WC "''ARCH_TYPE'"
+$ WC "''GNUC_REPLACE'"
+$ WC "''SOCKET_REPLACE'"
+$ WC "''THREAD_REPLACE'"
+$ WC "''C_Compiler_Replace'"
+$ WC "''MALLOC_REPLACE'"
+$ WC "''THREAD_UPCALLS'"
+$ WC "''THREAD_KERNEL'"
+$ WC "PV=''version'"
+$ WC "FLAGS=FLAGS=''extra_flags'"
+$ WC "''LARGEFILE_REPLACE'"
+$ WC "''DECTERM_REPLACE'"
+$ close CONFIG
+$!
$ echo4 "Extracting ''defmakefile' (with variable substitutions)"
$ 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'"
+$ mcr []munchconfig 'config_sh' 'Makefile_SH' -f extra_subs.txt
$! Clean up after ourselves
$ DELETE/NOLOG/NOCONFIRM []munchconfig.exe;
+$ DELETE/NOLOG/NOCONFIRM []extra_subs.txt;
$!
$ echo4 "Extracting make_ext.com (without variable substitutions)"
$ Create Sys$Disk:[-]make_ext.com
$! NOTE: This file is extracted as part of the VMS configuration process.
$! Any changes made to it directly will be lost. If you need to make any
$! changes, please edit the template in Configure.Com instead.
-$ def = F$Environment("Default")
+$ mydefault = F$Environment("Default")
$! p1 - how to invoke miniperl (passed in from descrip.mms)
$ p1 = F$Edit(p1,"Upcase,Compress,Trim")
$ If F$Locate("MCR ",p1).eq.0 Then p1 = F$Extract(3,255,p1)
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
+$ Set Def &mydefault
$ Goto next_ext
$ done:
$ sts = $Status
$ 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 "$!perlcc == """ + perl_setup_perl + " ''vms_prefix':[utils]perlcc.com"""
-$ WRITE CONFIG "$ perldoc == """ + perl_setup_perl + " ''vms_prefix':[lib.pod]perldoc.com -t"""
+$ WRITE CONFIG "$ perlbug == """ + perl_setup_perl + " ''vms_prefix':[utils]perlbug.com"""
+$ 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"""