$ use_vmsdebug_perl = "n"
$ use64bitall = "n"
$ use64bitint = "n"
+$ uselongdouble = "n"
$ uselargefiles = "n"
$ usestdstat = "n"
-$ usedecterm = "y"
+$ usedecterm = "n"
$ usesitecustomize = "n"
$ C_Compiler_Replace = "CC="
$ thread_upcalls = "MTU="
$! 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_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'
$!: 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"
$ 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 "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
$ thread_kernel = "MTK=MTK=1"
$ usekernelthreads = "define"
+$ ENDIF
$ ENDIF
$ ENDIF
$ ENDIF
$ ELSE
$ d_unlink_all_versions = "undef"
$ ENDIF
-$ bool_dflt = "y"
-$ IF F$TYPE(usedecterm) .NES. ""
+$!
+$! 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
-$ dflt = f$search("SYS$SHARE:DECW$TERMINALSHR*.EXE")
-$ IF dflt .EQS. "" THEN bool_dflt = "n"
+$ 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 ""
$ 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"
$ dflt = dflt - "Socket" ! optional on VMS
$ ENDIF
$ IF .NOT. use_threads THEN dflt = dflt - "Thread"
+$ 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
$ 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
$! 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 .LT. "6.2"
+$ 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"
$ 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'"
$ 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_UPCALLS'" "''THREAD_KERNEL'" "PV=''version'" "FLAGS=FLAGS=''extra_flags'" "''LARGEFILE_REPLACE'" -
-"''DECTERM_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